意图:定义一个用于创建对象的接口,让子类决定实例化哪一个类。
Factory Method使一个类的实例化延迟到其子类。
结构:
代码示例:
interface Factory{
public Product createProduct();
}
class FactoryA implements Factory{
@Override
public Product createProduct() {
return new ProductA();
}
}
class FactoryB implements Factory{
@Override
public Product createProduct() {
return new ProductB();
}
}
interface Product{
public void info();
}
class ProductA implements Product{
@Override
public void info() {
System.out.println("产品A");
}
}
class ProductB implements Product{
@Override
public void info() {
System.out.println("产品B");
}
}
测试代码:
public class factoryMethod {
public static void main(String[] args) {
//编译看左边,运行看右边
Factory factoryA = new FactoryA();
Product productA = factoryA.createProduct();
productA.info();
Factory factoryB = new FactoryB();
Product productB = factoryB.createProduct();
productB.info();
}
}
运行结果:
产品A
产品B