Skip to content

Latest commit

 

History

History
9 lines (5 loc) · 1.11 KB

File metadata and controls

9 lines (5 loc) · 1.11 KB

工厂 Factories

为了创建具有内在一致性的的完整聚合体或大型的值对象,逻辑可能会变得复杂或者会暴露太多的内部结构,这时可以用工厂进行封装。

对象的创建本身可能是一个重要的操作,但将这种复杂的装配操作作为所创建对象的职责并不合适。将这些职责混杂在一起会产生难以理解的拙劣设计。让客户端程序直接创建对象,又会污染客户端的设计,破坏被装配对象或聚合体的封装,并使客户端与所创建对象的实现之间产生过度的耦合。

因此:

可以将创建复杂对象和聚合体实例的职责转移到一个单独的对象上,该对象本身在领域模型中可能并不承担职责,但仍是领域设计的一部分。提供一个封装复杂装配操作的接口,这个接口不需要客户端引用被实例化对象的具体类。将创建聚合体的操作作为一个整体,并在创建的过程中确保满足固定规则。将创建复杂值对象的操作作为一个整体,或者在使用构建器(builder)组装其元素后再进行创建。