首先需要知道的是Factory和Repository是程序设计模式,不是DDD特有的。
Factory工厂模式是为了简化创建对象的方式,通过创建一个工厂接口,然后让其子类决定实例化哪一个工厂类,这样就不用每次new想要的类。
Factory一般使用在领域层创建Entity时。
Repository仓库模式是为了持久化领域层创建的Entity(领域model),如将领域层创建的订单对象保存到SQL server数据库中。所以Repository不属于领域层的,这样设计的好处时,如果我们更改了数据存储的方式,如SQL server数据库改为了Oracle数据库,只需要重写Repository层的代码,这就是为什么Repository层拆分出来的好处。