
public class Magnate{
public static void main(String[] args){
try{
//告诉司机我今天坐奔驰
Car car = Driver.driverCar("benz");
//下命令:开车
car.drive();
。。。
将本程序空缺的其他信息填充完整后即可运行。如果你将所有的类放在一个文件中,请
不要忘记只能有一个类被声明为 public。本程序在 jdk1.4 下运行通过。
程序中各个类的关系表达如下:
这便是简单工厂模式了。怎么样,使用起来很简单吧?那么它带来了什么好处呢?
首先,使用了简单工厂模式后,我们的程序不在“有病”,更加符合现实中的情况;而且
客户端免除了直接创建产品对象的责任,而仅仅负责“消费”产品(正如暴发户所为)。
下面我们从开闭原则(对扩展开放;对修改封闭)上来分析下简单工厂模式。当暴发户
增加了一辆车的时候,只要符合抽象产品制定的合同,那么只要通知工厂类知道就可以被客
户使用了。所以对产品部分来说,它是符合开闭原则的;但是工厂部分好像不太理想,因为
每增加一辆车,都要在工厂类中增加相应的业务逻辑或者判断逻辑,这显然是违背开闭原则
的。可想而知对于新产品的加入,工厂类是很被动的。对于这样的工厂类(在我们的例子中
是为司机师傅),我们称它为全能类或者上帝类。
我们举的例子是最简单的情况,而在实际应用中,很可能产品是一个多层次的树状结构。
由于简单工厂模式中只有一个工厂类来对应这些产品,所以这可能会把我们的上帝累坏了,
也累坏了我们这些程序员:(
于是工厂方法模式作为救世主出现了。
四、工厂方法模式
工厂方法模式去掉了简单工厂模式中工厂方法的静态属性,使得它可以被子类继承。这
样在简单工厂模式里集中在工厂方法上的压力可以由工厂方法模式里不同的工厂子类来分
担。
你应该大致猜出了工厂方法模式的结构,来看下它的组成:
1) 抽象工厂角色: 这是工厂方法模式的核心,它与应用程序无关。是具体工厂角色必须
实现的接口或者必须继承的父类。在 java 中它由抽象类或者接口来实现。
2) 具体工厂角色:它含有和具体业务逻辑有关的代码。由应用程序调用以创建对应的具体
产品的对象。
评论26
最新资源