读书人

玩转抽象工场模式

发布时间: 2013-10-19 20:58:23 作者: rapoo

玩转抽象工厂模式

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

上一篇介绍了工厂模式,《玩转工厂模式》,下面再写一个例子来加深一下对抽象工厂模式的理解。

package go.derek;//测试类,模拟客户端调用public class FactoryTest{public static void main(String[] args){//创建中国工厂,和德国工厂MakeUpFactory china=new ChinaFactory(); MakeUpFactory germany=new GermanyFactory(); //创建宝马工厂对象,以制造地点为构造参数CarFactory bmw=new BmwFactory(china);//执行宝马工厂的流程bmw.brand();//获得指定型号的宝马车Car car1=bmw.create("745Li");car1.intro();Car car2=bmw.create("765Li");car2.intro();//创建奥迪工厂对象,以制造地点为构造参数CarFactory audi=new AudiFactory(germany);//执行奥迪工程的流程audi.brand();//获得指定型号的奥迪车Car car3=audi.create("A6L");car3.intro();Car car4=audi.create("A8L");car4.intro();}}
运行结果如下

这是宝马工厂,采用 宝马 指定配件与制造工艺
这辆宝马的型号是Bmw_745Li
这辆车在 中国 制造 ,销往东亚地区
这辆宝马的型号是Bmw_765Li
这辆车在 中国 制造 ,销往东亚地区
这是奥迪工厂,采用 奥迪 指定配件与制造工艺
这辆奥迪的型号是A6L
这辆车在 德国 制造,销往欧洲地区
这辆奥迪的型号是A8L
这辆车在 德国 制造,销往欧洲地区

由这个例子可见,抽象工厂模式与工厂模式的区别就在与前者是以组合的形式来扩展,而后者是以继承的形式。两者都有特定的应用场景,工厂模式在增加产品方面很在行,但是对扩展非产品的需求则显得力不从心了。抽象设计模式则不然,增加产品不是他的本行,扩展非增加产品的需求时就很给力了。两者都是很重要的设计模式,值得好好去体会~

读书人网 >编程

热点推荐