1.意图
定义一个用于对象创建的接口,让子类决定实例化哪个类,Factory Method
使一个类的实例化延迟到其子类。
2.参与对象
Product,ConcreteProduct,Creator,ConcreteCreator
3.结构
代码:
public interface Creator {
public Product getProduct();
}
public interface Product {
void play();
}
public class ConcreteCreatorA implements Creator {
private final static ConcreteCreatorA concreteCreatorA = new ConcreteCreatorA();
private ConcreteCreatorA(){
}
public static Creator getConcreteCreatorA(){
return concreteCreatorA;
}
@Override
public Product getProduct() {
return new ConcreteProductA();
}
}
public class ConcreteCreatorB implements Creator {
private final static ConcreteCreatorB concreteCreatorB = new ConcreteCreatorB();
private ConcreteCreatorB(){
}
public static Creator getConcreteCreatorB(){
return concreteCreatorB;
}
@Override
public Product getProduct() {
return new ConcreteProductB();
}
}
public class ConcreteProductA implements Product {
@Override
public void play() {
System.out.println("A.play");
}
}
public class ConcreteProductB implements Product {
@Override
public void play() {
System.out.println("B.play");
}
}
public class Client {
public static void main(String[] args) {
Creator creator = ConcreteCreatorB.getConcreteCreatorB();
Product product =creator.getProduct();
product.play();
}
}