设计模式是一套经过反复使用的代码设计经验,目的是为了重用代码、让代码更容易被他人理解、保证代码可靠性。常见设计模式分为创建型模式、结构型模式、行为型模式共二十三种,今天我们重点说一下工厂模式。
为什么要使用工厂模式?
为什么要使用设计模式衍生到为什么要使用工厂模式,也可以说使用工厂模式来创建实例的优势。
什么是工厂模式?
简单的说工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式。
工厂模式分为:简单工厂模式、工厂方法模式和抽象工厂模式。
使用工厂模式创建对象有什么优势?
1:解耦
2:易于维护(减少修改量降低错误出现的机率)
*本篇幅主要分析如何使用工厂模式创建对象减少修改量降低错误出现的机率
定义
修改次数为P;应用次数为N。
下面我们以输出“小米加步枪战胜飞机和大炮”来对比工厂模式在实际开发中带来的优势。
01 New关键字创建
要输出“小米加步枪战胜飞机和大炮”的组合,一般我们的第一印象是使用new关键字来创建对象进行组合,下面就叫我们来用new关键字来实现。
new关键字实现:
对象变更产生的修改情况分析
对“Xiaomi”对象改为“ChianXiaomi”,此时要分别对应用一和应用二中的对象名进行修改如下:
从new关键字创建类更改情况可以看出修改次数为4次,即P = (N*2)次。
下面我们使用工厂模式来分析修改次数P是多少
02 简单工厂模式
简单工厂实现:
对象变更产生的修改情况分析
对“Xiaomi”对象改为“ChianXiaomi”, 此时无需对应用一和应用二进行修改,只需对创建Xiaomi对象的工厂进行修改即可。
从普通工厂模式对类更改情况可以看出修改次数为1次,即P = 1次。
03 工厂方法模式
工厂方法模式实现:
对象变更产生的修改情况分析
对“Xiaomi”对象改为“ChianXiaomi”,此时无需对应用一和应用二进行修改,只需要对创建Xiaomi对象的工厂进行修改即可。
从工厂方法模式对类更改情况可以看出修改次数为1次,即P = 1次。
04 抽象工厂模式
抽象工厂模式实现:
对象变更产生的修改情况分析
对“Xiaomi”对象改为“ChianXiaomi”,此时无需对应用一和应用二进行修改,只需要对创建Xiaomi对象的工厂进行修改即可。
从抽象工厂模式对类更改情况可以看出修改次数为1次,即P = 1次。
把new关键字、普通工厂模式、工厂方法模式和抽象工厂模式在2次应用的修改情况进行对比
修改次数比较:
把new关键字、普通工厂模式、工厂方法模式和抽象工厂模式在N次应用的修改情况进行分析得出
从创建对象实例对比和修改情况分析可以看出,普通工厂模式、工厂方法模式和抽象工厂模式的修改次数与应用次数N无关,而new关键字修改次数是应用次数N的2倍。所以对于应用次数N(N>0)修改次数P的大小依次为new关键字创建>抽象工厂模式=工厂方法模式=普通工厂模式。
对于实际工作中某个庞大复杂的系统而言,过多的实例化逻辑于宿主类中会给后期的维护与扩展带来很多麻烦,所以我们以后在开发过程中如果在遇到new关键字创建对象的时候,应该考虑下是否使用工厂模式来创建对象,以减少代码的修改量来降低错误出现的概率。