首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件开发 >

玩转简略工厂设计模式

2013-10-18 
玩转简单工厂设计模式最近在看《headfirst 设计模式》,发现简单工厂,工厂模式,抽象工厂模式这三者的区别于联

玩转简单工厂设计模式

最近在看《headfirst 设计模式》,发现简单工厂,工厂模式,抽象工厂模式这三者的区别于联系不是太好理解,经过研究之后,写几个例子,加深一下印象。

首先是简单工厂

package go.derek;//测试类public class FactoryTest{public static void main(String[] args){Car car1=CarFactory.create("宝马", "745Li");car1.intro();Car car2=CarFactory.create("奥迪", "A8L");car2.intro();}}
运行结果如下

这是一辆宝马车,型号是745Li
这是一辆奥迪车,型号是A8L

在测试类里面可以看到运行时多态的效果,调用intro方法的不是具体的宝马或奥迪,而是car接口的引用。

在测试类里面也看不到new关键字,对象的创建被成功封装在了create这个工厂方法里面。

在实际应用中,这个测试类其实就相当于一个客户端的调用,所以这个工厂方法就成功将具体的car实现类与客户端类解耦了。

但简单工厂模式的局限也很明显。当car的实现类大量增加的时候,工厂方法里面的依赖变得臃肿起来,宝马不仅有745型号,还有735,755,523,525,320,323,325等等。。

同样奥迪也是一样,此外汽车品牌也绝对不只有这两个。。奔驰,法拉利,宾利,路虎,数不胜数。。所以简单工厂模式适用于实现类不是太多,扩展可能性不太大的情形。


热点排行