代码之家  ›  专栏  ›  技术社区  ›  Mohsen

聚合根工厂可以创建根,它的内部类吗?

  •  0
  • Mohsen  · 技术社区  · 7 年前

    当前,我的聚合和值对象具有受保护的构造函数,并且几乎所有这些构造函数都是由具有描述性名称的聚合内部的静态工厂方法创建的。它创造了一个美好的 以及精巧的模型 但是让单元测试很痛苦 (如果域模型创建失败,服务/命令处理程序也将标记为失败)。另一方面,为每个实体引入工厂方法,值对象迫使我为每个实体/值对象向服务注入工厂接口。

    下面是一个创建公司聚合根的工厂服务示例,它是内部实体/VOs:

    public class CompanyFactory : ICompanyAggregateRootFactory
    {
        public Company CreateCompany(...){}
        public Employee CreateEmployee(...){}
        public CEO CreateCEO(...){}
        ....
    
    }
    

    数字用户线 不让单元测试相互依赖的清晰性?

    1 回复  |  直到 7 年前
        1
  •  0
  •   Mohamed Bouallegue    7 年前

    蓝皮书有一章是关于工厂的。是的,为聚合根创建工厂是完全可以的。这家工厂的内部实施并不重要。您可以将其他工厂用于值对象或任何其他方式。