我一直想知道 Factory Pattern 和 Repository Pattern 是否需要在Domain Driven Design项目中齐头并进?
我问的原因是我这样做的方式是这样的:
GUI - > ClassFactory - > ClassProduct(在域模型中) - > ClassProductRepository - >数据源
GUI调用ClassFactory将GUI与业务逻辑分开。 ClassProduct调用ClassProductRepository将业务逻辑与数据源分开。
将这些设计模式与域驱动设计一起使用是错误的方法吗?如果是,请说明您对此主题的意见。
答案 0 :(得分:8)
你走在正确的轨道上。正如Chad指出的那样,您将希望使用GUI界面分离模式作为域和UI之间的附加层。建立了MVC,MVP,演示模型等,并为UI分离提供了详细记录的模式。 Martin Fowler的优秀PoEAA涵盖了其中许多
至于你的主要问题。是。工厂和存储库可以很好地协同工作。实际上,Evans在DDD中建议,在某些情况下,当您从数据存储重构对象时,可以将对象创建的责任委派给您的工厂类。
client <=> repository -> factory
|
v
database
过度简化但你明白了。埃文斯没有涉及的一点(但福勒所涵盖的)是依赖注入。随着域复杂性的不断增长,您可能需要考虑转移到IoC容器来管理对象生命周期。
答案 1 :(得分:1)
我建议坚持使用MVC作为将业务逻辑与视图和控制器分开的通用方法。这已被充分记录并且经过充分研究的方法,尽管它是我们目前最好的方法。
尽管如此,您似乎只是因为使用该模式而尝试使用该模式。这对学习很有帮助,但在大多数应用程序系统中,我已经看到你所描述的模式要么不存在,要么更简单的方法有效,要么维持它的噩梦。
请参阅我之前对类似问题的回答,该视频的视频可以在将来帮助您进行设计。
Linky