一、意图
定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method使一个类的实例化延迟到其子类。
二、适用性
在下列情况下可以使用Factory Method模式
- 当一个类不知道它所必须创建对象的时候。
- 当一个类希望由它的子类来指定它所创建的对象的 。
- 当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。
三、结构
四、代码
Product
public abstract class Product {
}
public class ConcreteProduct extends Product {
}
Creator
public abstract class Creator {
public void showName(){
System.out.println(getProduct().getClass().getSimpleName());
}
/**
* factory method.
*
* @return product
*/
public abstract Product getProduct();
}
public class ConcreteCreator extends Creator {
@Override
public Product getProduct() {
return new ConcreteProduct();
}
}
Client
public class Client {
public static void main(String[] args){
Creator creator = new ConcreteCreator();
creator.showName();
}
}
结果:
ConcreteProduct