设计模式之工厂模式

工厂模式基本上就是最常用到的模式。

工厂模式有3种,简单工厂,工厂,抽象工厂。

找到一篇文章,3种模式的类图可以参考

http://www.cnblogs.com/toutou/p/4899388.html

简单工厂模式点评:

假如一个业务逻辑,要根据一个类型做不同的操作的时候,就需要用简单工厂模式来把if else干掉。

简单工厂模式符合单一职责模式。

但是每需要增加一种类型的时候,就要改工厂类的代码,所以简单工厂模式不符合封闭开放原则。

实际工作中,

常配合策略模式一起使用,使用策略模式封装工厂中的逻辑。

常使用反射和配置文件来消除简单工厂中具体实例那一个实现类的逻辑。

 

 

工厂模式点评:

工厂模式抽象出一个工厂接口,在客户端需要那个工厂就用那个工厂来实现这个接口。

所以以后再新加功能的时候,只要再增加一个实现类就好了,不需要改工厂代码。

工厂模式符合依赖倒转原则,符合封闭开放原则,符合单一职责原则。

但是把使用哪一个工厂的权利交给了客户端。

实际工作中,会利用反射+配置文件消除这个缺点。

 

抽象工厂模式点评 :

所有工厂模式最面向对象的,产品有产品接口,工厂有工厂接口。 

如果要增加一个功能,要增加一个抽象产品及n个实现,要还要修改抽象工厂,以及所有的工厂实现类。

这就造成了对增加开放,对修改也开放,违反了封闭开放原则。

比如你的项目既要支持mysql又要支持oracle,此场景适用抽象工厂模式。

 

我是这么理解的

1 工厂模式是抽象工厂的简版,简单工厂模式是工厂的简版,也可以反过来说,工厂模式是简单工厂的进一步抽象,抽象工厂是工厂的进一步抽象

2 纯以封闭开放原则的角度讲,工厂模式胜出了。

 

posted @ 2017-09-13 17:42  叫什么都行  阅读(169)  评论(0编辑  收藏  举报