简单工厂之汽车制造

来源:互联网 发布:pano2vr软件 编辑:程序博客网 时间:2024/05/01 20:02
简单工厂模式是创建型模式中工厂模式的最基本模式,通过简单工厂模式我们可以理解设计模式是如何提高程序的可维护性和可扩展性的。
简单工厂之美在于他的简单,在于他工业化之美、流水化生产之美,就像由农业化社会的手工业者的生产模式到工厂工业化生产所给人心理上的震撼感。
下面我们以生产汽车为例,开始我们的模式之旅。
假设我是一个野心勃勃的创业者,我们投资兴建了一个生产QQ小汽车的工厂。
public class QQcar{
private color;//汽车颜色
private lenght; //汽车长度
...
public run(){...}//汽车启动行使
...
}
//生产一辆QQ车
QQcar QQcar1=new QQcar();
QQcar1.run();
由于我们的小汽车经济实惠,所以销路非常好。但是有些客户提出能否生产马力更大、车型更大的小汽车,价格可以高一些。我们决定在保留原QQ车型的基础上生产更多的型号的小汽车,比如夏利、吉利等。我们把原有QQ车型中的基本技术保留下来,抽象成我们生产其他车型的基础。在各个车型生产中,有不同的技术。
public class Car{
private color;//汽车颜色
public run(){...}//汽车启动行使
...
}
public class QQcar extends Car{   //QQ
...
public run(){...}//QQ汽车启动行使
...
}
public class XLcar extends Car{   //夏利
...
public run(){...}//夏利汽车启动行使方式
...
}
... ...

但现在我们只有一套车间设备,所以在生产具体车型时必须告诉工厂生产什么型号的车,以便工厂进行设备调整。
public class Factory{
public Car makecar(String cartype){//根据不同型号,生产汽车
      if(cartype=="QQ"){return new QQcar();}
      else if(cartype=="夏利"){return new XLcar();}
      ...
       }
}
当客户需要QQ时
Factory myFactory=new Factory();
Car  car1=myFactory.makecar("QQ");
car1.run();   //新车开走
当客户需要夏利时
Car  car2=myFactory.makecar("夏利");
car2.run();   //夏利开走
... ...
这样我们如果还要增加新车型,只要增加一个新类,同时增加工厂中新型号的判断逻辑,就可以生产新车型了。
随着车型不断增加,我们的一个车间明显不能满足要求了,最后我们决定购进新设备,建造新车间,每个车间只生产一个型号的车型,这样避免了设备的不断调整。
这就超出了简单工厂的范围,我们要进入工厂方法模式了。