二、工厂方法模式

Alias: virtual constructor 虚构造器
Intent
Define an interface for creating an object, but letsubclasses decide which class to instantiate. FactoryMethod lets a class defer instantiation to subclasses.
(定义一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method使一个类的实例化延迟到其子类。 )
Motivation
Frameworks use abstract classes to define and maintainrelationships between objects. A framework is oftenresponsible for creating these objects as well.

Paste_Image.png

Paste_Image.png

1)优点
 多态性:客户代码可以做到与特定应用无关, 适用于任何实体类
 Connects parallel class hierarchies提供缺省实现,子类可以重写新的实现,也可以继承父类的实现。 -- 加一层间接性,增加了灵活性
 Connects parallel class hierarchies
良好的封装性,代码结构清晰。
扩展性好,在增加产品类的情况下,只需要适当修改具体的工厂类或扩展一个工厂类,就可“ 拥抱变化”
屏蔽产品类。产品类的实现如何变化,调用者都不需要关心,只需关心产品的接口,只要接口保持不变,系统中的上层模块就不会发生变化。
典型的解耦框架。高层模块只需要知道产品的抽象类,其他的实现类都不需要关心,符合迪米特法则,符合依赖倒臵原则,符合里氏替换原则
2)缺点
需要Creator和相应的子类作为factory method的载体,如果应用模型确实需要creator和子类存在,则很好;否则的话, 需要增加一个类层次

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容