1)工厂方法 factory method
作为类的开发者,我们通常会在类中提供构造器方法以便于客户代码实例化该类。然而,有时候客户代码并不清楚该对及各类中的哪一个类进行实例化。这个时候,我们可以利用工厂方法模式定义一个创建对象的接口,同时控制对哪个类进行实例化。
工厂方法模式的核心思想是,让对象的创建者代替用户确定应该实例化哪一个类。
public class Factory {
private Factory {
}
private static Factory factory = null;
public static synchronized Factory getFactory() {
if (factory == null) {
factory = new Factory();
}
return factory;
}
public static Sample creator(int which) {
if (which == 1) {
return new SampleA();
} else if (which == 2) {
return new SampleB();
}
}
}
2)抽象工厂abstract factory
public abstract class Factory {
public abstract Sample creator();
public abstract Sample2 creator(String name);
}
public class SimpleFactory extends Factory {
public Sample creator() {
// code
return new SampleA();
}
public Sample2 creator(String name) {
// code
return new Sample2A();
}
}
public class BombFactory extends Factory {
public Sample creator() {
// code
return new SampleB();
}
public Sample2 creator() {
// code
return new Sample2B();
}
}