玩转工厂模式
最近在看《headfirst 设计模式》,发现简单工厂,工厂模式,抽象工厂模式这三者的区别于联系不是太好理解,经过研究之后,写几个例子,加深一下印象。
上一篇介绍了简单工厂模式,《玩转简单工厂模式》,下面再写一个工厂模式的例子
package go.derek;//测试类,模拟客户端调用public class FactoryTest{public static void main(String[] args){//创建宝马工厂对象CarFactory bmw=new BmwFactory();//执行宝马工厂的流程bmw.brand();//获得指定型号的宝马车Car car1=bmw.create("745Li");car1.intro();Car car2=bmw.create("765Li");car2.intro();//创建奥迪工厂对象CarFactory audi=new AudiFactory();//执行奥迪工程的流程audi.brand();//获得指定型号的奥迪车Car car3=audi.create("A6L");car3.intro();Car car4=audi.create("A8L");car4.intro();}}运行结果如下
这是宝马工厂,采用 宝马 指定配件与制造工艺
这辆宝马的型号是Bmw_745Li
这辆宝马的型号是Bmw_765Li
这是奥迪工厂,采用 奥迪 指定配件与制造工艺
这辆奥迪的型号是A6L
这辆奥迪的型号是A8L
对比上一篇简单工厂设计模式,可以看出,产品Car基本一致,只不过工厂类有了区别,简单工厂是一个工厂生产所有汽车,工厂模式则是一个工厂只生产一种品牌的车。显然如果有很多品牌,很多型号的车的话,依赖关系要比简单模式简单的多,扩展起来也方便的多。