设计模式:工厂和存储库

Pok*_*oku 5 user-interface design-patterns domain-driven-design

我一直想知道工厂模式存储库模式是否需要在域驱动设计项目中携手并进?

我问的原因是我这样做的方式是这样的:

GUI - > ClassFactory - > ClassProduct(在域模型中) - > ClassProductRepository - > Datasource

GUI调用ClassFactory将GUI与业务逻辑分开.ClassProduct调用ClassProductRepository以将业务逻辑与数据源分开.

将这些设计模式与域驱动设计一起使用是错误的方法吗?如果是,请说明您对此主题的意见.

Ken*_*ran 8

你走在正确的轨道上.正如Chad指出的那样,您将希望使用GUI界面分离模式作为域和UI之间的附加层.建立了MVC,MVP,演示模型等,并为UI分离提供了详细记录的模式.Martin Fowler的优秀PoEAA涵盖了其中许多

至于你的主要问题.是.工厂和存储库可以很好地协同工作.实际上,Evans在DDD中建议,在某些情况下,当您从数据存储重构对象时,可以将对象创建的责任委派给您的工厂类.

client <=> repository -> factory
               |
               v
            database
Run Code Online (Sandbox Code Playgroud)
  1. 客户端从存储库请求对象.
  2. 存储库查询数据库.
  3. 存储库将原始数据发送到工厂.
  4. 工厂返回对象.

过度简化但你明白了.埃文斯没有涉及的一点(但福勒所涵盖的)是依赖注入.随着域复杂性的不断增长,您可能需要考虑转移到IoC容器来管理对象生命周期.