【问题标题】:DDD Can I use abstract factory to create domain objectsDDD 我可以使用抽象工厂来创建域对象吗
【发布时间】:2014-09-23 08:10:32
【问题描述】:

我有一个域模型,其中包含一些 Abstract Entities 和一些 Concrete Entities 以添加 extensibility

我可以添加一些Base app service 可以接受Abstract FactoryAbstract Repository 以应用具体实体之间的共享逻辑。

问题:

1 .我是在一条真正的道路上吗?

2 . 如果是,我应该如何将工厂注入到服务中?

【问题讨论】:

  • 您可以使用依赖注入(DI)通过构造函数将您的依赖注入到您的服务中。您可以使用服务中的 private readonly 字段保持对这些依赖项的引用。

标签: domain-driven-design factory domain-model abstract-factory


【解决方案1】:

如果无法立即解析具体对象,您可以将工厂注入实体。当他们的产品只能在以后实例化时,工厂很有用,例如因为它期望的数据还没有准备好。

所以是的,您可以将具体工厂注入实体,而依赖注入是正确的方法。

在相关说明中,有一个非常具体的场景,它也会影响 DDD。这可能不是您的实际情况,但值得一提。生产哪个具体产品的决定可能是领域逻辑的一部分。我的意思是,工厂的选择不是固定的,而是根据领域逻辑的具体情况而定。

在这种情况下,我有时会选择将部分领域逻辑添加到具体的工厂实现中。结果是抽象工厂的定义方式与以前相同,但具体工厂成为领域模型的一部分。这有点不寻常,需要小心谨慎。在Switchable Factory MethodsDomain Logic in Factories中有对这种方法的分析。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多