快速提问:将我的域驱动设计风格的存储库实现为单例是一个好主意还是一个坏主意?为什么? 或者我应该使用依赖注入器容器来管理我的存储库并确定它们是否是单例? 我还在快速
或者我应该使用依赖注入器容器来管理我的存储库并确定它们是否是单例?
我还在快速阅读DDD,并希望看到一些好的存储库示例.
我已经看到了几种方法来做到这一点.最常见的方法是使用依赖注入将存储库注入使用它们的对象中.通常这些是演示者或控制器类,但在某些情况下,模型调用存储库.通常情况下,如果你避免这种情况会更好.如果你可以使用di-container来做到这一点,那就去吧.
您还可以使存储库实现单例模式.我试图避免这种情况,因为单身人士通常使用静态方法.这可以使测试调用单例的代码更加困难.如果你必须以这种方式做事,那么确保你分离出调用单例的代码并使用“手动”依赖注入将单例注入到调用它们的类中.这摆脱了你原本会得到的一些紧密耦合.
我已经看到了一些存储库永远不会被调用的例子.当有人在模型中导航对象图并请求未加载的对象时,模型只会引发一个事件,并且存储库会对此事件作出反应.这种方式没有调用存储库,它完全与模型分离.我自己没有使用这种架构,但看起来很干净.