在领域模型设计中有一种工具或者概念叫工厂,它虽然不属于领域业务对象的范畴,但是却是领域设计中必不可少的,最近看了些书,总结了下工厂模式在领域设计中的应用实现:

一、领域对象内通过工厂方法实现对象的创建,体现在下面两种情景:

      1.根据领域分析,得出领域聚合关系,对此聚合关系对应的对象进行创建,即可通过在领域根对象中增加工厂方法,实现对此领域对象的创建。比如:

           对象a和b属于一个领域范畴,并且a的生命周期决定b,对此领域的访问,只能通过a实现,因此,a就是领域根对象;此领域根对象的创建包括a和b,因此可以在a内部实现工厂方法来创建领域根对象a(内部需要创建a和b,并建立关联)

      2.对象A虽然不属于对象B,但是对象A的创建需要依赖于对象B的数据,则可以在对象B中实现工厂方法来创建对象A

二、通过创建单独对象工厂来创建领域对象

       1.当需要用工厂来封装对象的创建细节时,但是又找不到自然的领域对象(实体)来容纳工厂方法时,即可创建单独工厂对象来实现对象的创建

      2.聚合根内部的对象需要工厂来封装细节,但是聚合根又不适合去做这件事情时,也可以利用单独工厂对象来实现对象的创建

三、不是所有对象的创建都需要工厂模式

      当出现以下情形时,可以直接用类构造函数创建对象:

       1.对象不属于任何层次结构的一部分并且构造函数足够简单,也没有通过接口来实现多态

       2.客户关心对象的具体实现,比如java中的集合对象,虽然定义接口实现多态,但考虑到性能等原因,需要明确知道是用集合的那个具体实现,因此,可以直接创建对象

 

       无论是用哪种方式创建对象,都需要遵循原子操作原则;