设计模式简单工厂模式
Posted 喻聪
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了设计模式简单工厂模式相关的知识,希望对你有一定的参考价值。
使用简单工厂来实现一个计算器功能(首先看看类图):
1 Operation运算类:
2 具体的某类实现(例如:加法实现):
3 简单运算工厂类:
4 客户端调用代码:
现在,换成工厂方式来实现计算器
1 先构建一个工厂接口
2 加减乘除各建一个具体的工厂来实现这个IFactory这个接口
3 具体的某类实现还是不变,跟上面的一样,还是贴一下。
4 客户端的实现
现在,我们要增加一个新的需求,比如:求M数的N次方。
在简单工厂里:
1先去添加"求M数的N次方"的算法实现类(继承Operation父类【抽象类】);
2 然后去更改OperationFactory类里面的工厂方法createOperation,使用else if分支(或case分支)来做判断;
简单工厂模式的最大优点在于工厂类中包含了必要的逻辑判断,根据客户端的选择条件动态实例化相关的类,对于客户端来说,去除了与具体产品的依赖。
但是,如果要加一个"求M数的N次方"的功能,我们是一定需要给运算工厂类的方法里加"Case"的 分支条件的,修改原有的类,违反了开发封闭原则。
工厂方法模式:定义一个用于创建对象的接口,让子类决定实例化哪一个类。工厂方式使一个类的实例化延迟到其子类。
工厂方法模式实现时,客户端需要决定实例化哪一个工厂来实现运算类,选择判断的问题还是存在的,也就是说,工厂方法把简单工厂的内部逻辑判断转移到了客户端代码来进行。
以上是关于设计模式简单工厂模式的主要内容,如果未能解决你的问题,请参考以下文章
设计模式从青铜到王者第五篇:创建型模式之简单工厂模式( Simple Factory Pattern )