Welcome 微信登录

首页 / 软件开发 / JAVA / 对《Java与模式》中工厂方法模式的异议

对《Java与模式》中工厂方法模式的异议2010-12-13关于工厂方法的一点讨论,我们知道工厂方法属于类型创建模式,而抽象工厂属于对象创建模式,并且所谓的类创建模式就是把创建工作延迟到子类,而对象创建模式则将延迟到另一个对象。

并且设计模式中指出,类模式处理类和子类子间的关系,这些关系通过继承建立,是静态的,在编译时刻便确定下来。对象模式则处理对象之间的关系,是动态的,运行时刻是可以变化的,更具动态性。

工厂方法由于属于类型创建模式,因此它的创建工作由子类完成,而不是使用对象进行创建,并且在《设计模式》中工厂方法的动机一节有一个示例,它的类大致如下:

//抽象产品,可以是接口或者抽象类
public abstract class document {
public void open(){
...............
...............
}
public void close(){
...............
...............
}
public void save();
}
//具体的产品,
public class Mydocument extends document{
public void open(){
.............
..............
}
...............
}
我们工厂方法
public abstract class appliaction {
//该方法是工厂方法,由子类实现
public abstract document createDocument();
//模板方法,在方法中使用了工厂方法
pubic void newDocument(){
//使用工厂方法,获得doc,而实际有子类完成,//这里可以看出,对象的创建,是通过继承来实现,是静态的,编译时已经确定//而不是通过对象的委托来实现,故属于类创建型模式
Document doc=createDocument();
doc.open();
....................
doc.save();
}
}

具体的工厂实现由子类来实现工厂方法:

public class myappliaction extends appliaction {
public document createDocument(){
return new Mydocument();
}
}