达叔的朋友圈们

大话设计模式读书笔记-8工厂方法模式

2020-03-21  本文已影响0人  QuietHeart

第8章 雷锋依然在人间——工厂方法模式

定义

定义一个工厂类,包含创建对象的接口,用不同的子类工厂决定实例化那个类。将一个类的实例化,推迟到不同工厂子类中进行,而非单一工厂创建接口的不同分支。

优点:改进简单工厂模式,将创建对象的部分进一步隔离开来,使类实现更符合开放-封闭原则,客户端满足需求变化代码改动尽量少,

即,将简单工厂模式中创建对象的工厂类进一步抽象,定义公共抽象工厂类,再用继承它的具体工厂类创建具体对象,将创建对象的部分从函数分支中隔离出来,增加新对象就增加工厂类,无需修改已有类函数。

实现

实现图:

img

使用图:

img

简单工厂模式与工厂模式对比

简单工厂模式

简单工厂模式总结:通过继承将具体对象操作封装,使用户只使用抽象公共接口操作;通过简单工厂将对象的创建独立出来,使用户不必关心创建特定对象的过程;通过多态返回对象抽象父类,隔离具体类型,使用户不必关心返回对象的具体类型;但是没有将对象创建的过程隔离完全(即如果支持新的对象,还是要通过修改工厂类的方式;如果使用新的对象,还是要修改客户端所有为工厂类指定参数的地方替换参数)。

工厂模式

工厂模式总结:通过继承将具体对象操作封装,使用户只使用公共对象接口操作;通过抽象工厂将对象的创建独立出来,使用户不必关心创建对象的过程;通过具体工厂实现的创建,将不同对象的创建从类型判断分支中分离(即,如果支持新的对象,只需增加具体工厂类无需修改已有类;如果使用新的对象,只需修改具体工厂类创建对象前的具体工厂类型,无需修改所有后面,比如不用修改创建参数);通过多态将对象返回对象抽象父类,隔离具体类型,使用户不必关心返回对象的具体类型。

注:定义对象后,定义对象之处的对象类别修改之后,对象名字可以共用,这就叫封装了具体的创建过程(“不需要关心类”)或者关心的很少了。

上一篇 下一篇

猜你喜欢

热点阅读