创建方面的重构-将创建知识搬移到Factory
创建一个对象的知识散步在[X1] 多个类中,将创建的职责放在了不应该承担创建对象任务的类中,产生了创建蔓延的问题(这是解决方案蔓延坏味的一种)。
Factory模式使用一个类封装创建逻辑和客户代码的实例化配置选项。客户代码告诉Factory如何配置实例化对象,然后使用同一个Factory实例在运行时执行配置实例化对象。
Factory不需要使用专门类实现,可以定义一个接口,让现有类实现这个接口。
如果Factory的创建逻辑过于复杂,就应将其改成Abstract Factory模式,完成后,客户代码可以配置使用具体的ConcreteFactory。
[X1]客户代码需要根据一些选项配置对象,但是无法访问对象创建的代码,只好将配置信息一层一层的传递,直到传递到对象创建代码,导致创建代码和数据到处都是。
【优缺点】
合并创建逻辑和实例化/配置选项;
将客户代码与创建逻辑解耦;
如果可以直接实例化,会使设计复杂化。
浙公网安备 33010602011771号