跟我学习设计模式之第二篇:工厂方法模式开篇了。下面我们来看看其定义:
工厂方法模式又称工厂模式,也叫虚拟构造器(Virtual Constructor)模式或者多态工厂(Polymorphic Factory)模式,属于类的创建型模式。在工厂方法模式中,父类负责定义创建对象的公共接口,而子类则负责生成具体的对象,这样做的目的是将类的实例化操作延迟到子类中完成,即由子类来决定究竟应该实例化(创建)哪一个类。
下面以一个JAVA实例应用来看了解一下具体需求:
现实中不同品牌的手机应由不同的工厂制造,下面应用工厂模式来解决这个问题。
手机接口:
public interface Mobile {
public void call();
}
手机工厂接口:
public interface MobileFactory {
public Mobile productMobile();
}
摩托罗拉手机实现手机接口:
public class Motorola implements Mobile {
public void call() {
System.out.println("MOTOROLA モベイル");
}
}
诺基亚手机实现手机接口:
public class Nokia implements Mobile {
public void call() {
System.out.println("Nokia モベイル");
}
}
摩托罗拉工厂实现了生产手机的方法,返回摩托罗拉手机:
public class MotorolaFactory implements MobileFactory {
@Override
public Mobile productMobile() {
// TODO 自動生成されたメソッド・スタブ
System.out.print("Motorola工場で製造した");
return new Motorola();
}
}
诺基亚工厂实现了生产手机的方法,返回诺基亚手机:
public class NokiaFactory implements MobileFactory {
@Override
public Mobile productMobile() {
// TODO 自動生成されたメソッド・スタブ
System.out.print("Nokia工場で製造した");
return new Nokia();
}
}
客户程序:
public class Client {
/**
* @param args
*/
public static void main(String[] args) {
// TODO 自動生成されたメソッド・スタブ
MobileFactory mf;
Mobile m;
mf = new MotorolaFactory();
m = mf.productMobile();
m.call();
mf = new NokiaFactory();
m = mf.productMobile();
m.call();
}
}
输出:
Motorola工場で製造したMOTOROLA モベイル
Nokia工場で製造したNokia モベイル
下面的情景很适合应用工厂方法模式:
1,类不知道自己要创建哪一个对象;
2,类用它的子类来制定创建哪个对象;
3,客户需要清楚创建了哪一个对象。