简单工厂之汽车制造
2007-03-05 15:52
225 查看
简单工厂模式是创建型模式中工厂模式的最基本模式,通过简单工厂模式我们可以理解设计模式是如何提高程序的可维护性和可扩展性的。
简单工厂之美在于他的简单,在于他工业化之美、流水化生产之美,就像由农业化社会的手工业者的生产模式到工厂工业化生产所给人心理上的震撼感。
下面我们以生产汽车为例,开始我们的模式之旅。
假设我是一个野心勃勃的创业者,我们投资兴建了一个生产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(); //夏利开走
... ...
这样我们如果还要增加新车型,只要增加一个新类,同时增加工厂中新型号的判断逻辑,就可以生产新车型了。
随着车型不断增加,我们的一个车间明显不能满足要求了,最后我们决定购进新设备,建造新车间,每个车间只生产一个型号的车型,这样避免了设备的不断调整。
这就超出了简单工厂的范围,我们要进入工厂方法模式了。
简单工厂之美在于他的简单,在于他工业化之美、流水化生产之美,就像由农业化社会的手工业者的生产模式到工厂工业化生产所给人心理上的震撼感。
下面我们以生产汽车为例,开始我们的模式之旅。
假设我是一个野心勃勃的创业者,我们投资兴建了一个生产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(); //夏利开走
... ...
这样我们如果还要增加新车型,只要增加一个新类,同时增加工厂中新型号的判断逻辑,就可以生产新车型了。
随着车型不断增加,我们的一个车间明显不能满足要求了,最后我们决定购进新设备,建造新车间,每个车间只生产一个型号的车型,这样避免了设备的不断调整。
这就超出了简单工厂的范围,我们要进入工厂方法模式了。
相关文章推荐
- 找到好的汽车模具热流道厂家,汽车工厂将会制造出更好的汽车
- 简单工厂模式与工厂方法模式详细解读
- 简单工厂模式又叫静态工厂模式
- NET设计模式(1): 简单工厂模式
- 简单工厂
- 设计模式:简单工厂
- 大话设计模式C++版——表驱动法改造简单工厂
- Unity设计模式之简单工厂模式
- 设计模式之(简单工厂)(C#实现)(程杰)
- 设计模式(二)工厂模式:简单工厂模式
- Java技术_每天掌握一种设计模式(004)_使用场景及简单实例(创建型:抽象工厂)
- Go实战--Design Patterns in Golang 之工厂模式(简单工厂、工厂方法、抽象工厂)
- PHP中的设计模式-简单工厂,静态工厂,工厂方法,抽象方法的关系
- 简单工厂,工厂方法和抽象工厂的区别总结
- 简单工厂模式之php实现
- 简单工厂,工厂方法与抽象工厂区别体会
- 设计模式学习 之 简单工厂模式
- 简单工厂模式
- RelayRides:让汽车共享更简单
- 简单工厂、工厂方法、抽象工厂、策略模式、策略与工厂的区别