设计模式之(四)——工厂模式(Factory Pattern)

1、简单工厂


 

简单工厂,并非是设计模式,而是一种编程习惯,只是把产生对象的方法封装到一个工厂类里面去而已。

根据生产对象的参数值,生产不同的对象。像DateFormat也是使用简单工厂。

优势很明显,逻辑简单,缺陷也很明显,一个类负责了所有产品的创建。一旦出现更新。整个类维护的逻辑会相当复杂。

 

2、工厂方法

相对于简单工厂这种,抽象出了一个工厂抽象类,不是只有一个简单工厂类负责所有产品的创建,交由子类的创建。

 

3、抽象工厂

抽象工厂是一个类里面有多个工厂方法。

 

现在是在想,抽象工厂能直接用工厂方法替代吗?

最大的不同在于工厂方法一般只有一个工厂方法和重载的工厂方法,当不是一个普通简单的对象的时候,而如果是多个产品等级的话需要使用的是抽象工厂。

 

读不懂的东西,多读几次,自己动手画画图,敲敲改改代码,总能理解里面的含义。

 

https://stackoverflow.com/questions/5739611/differences-between-abstract-factory-pattern-and-factory-method

工厂方法就只是一个方法,我们可以在子类里面重写。使用的是继承并且依赖于子类对期望的对象示例进行处理。

抽象工厂是一个对象,拥有多个工厂方法。

 

 

为什么HeadFirst介绍的时候,能让你看不懂两者的区别是因为,抽象工厂使用了依赖倒置。我们接下来如果把依赖倒置放到

工厂方法里面,还有把抽象工厂移除依赖倒置的使用,其实就很容易看出差差别在哪里了。

 

我现在想明白为什么我在看HeadFirst的过程中,很难区分出工厂方法和抽象工厂间的区别。

因为多了DI,依赖倒置的加入,新的东西的加入,会让你把重心放到了新的东西上面,而忘记了区分最原始的区分。

HeadFirst的书在后面也是一样,写到代理的时候,会加入RMI。

我对比着《设计模式之禅》 看,好的地方在于比喻多,有模式之间的比较,国人能写这样的书,其实模式是吃透了,其实还是不错的。

缺点就是有些地方没有深究进去。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章