设计模式简单工厂模式

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 )

iOS经常使用设计模式——工厂方法(简单工厂模式,工厂方法模式, 抽象工厂模式)

02 简单工厂模式

设计模式—— 简单工厂

设计模式一:简单工厂模式

设计模式----简单工厂模式