【工厂方法模式】
定义一个用于创建对象的接口,让子类决定实例化哪个类
【使用场景】
在任何需要生成复杂对象的地方,都可以使用工厂方法模式。复杂对象适合使用工厂方法模式,用new就可以完成创建的对象无需使用工厂方法模式。
【模式思路】
简而言之,工厂方法模式就是把“生成对象的代码(使用new来调用构造函数的代码)”,封装在“Factory类”当中。
【UML类图】
【通用模式代码】
抽象产品类:
public abstract class Product{ public abstract void method(); }
具体产品类A:
public class ConcreteProductA extends Product { @Override public void method(){ System.out.println("具体产品A"); } }
具体产品类B:
public class ConcreteProductB extends Product { @Override public void method(){ System.out.println("具体产品B"); } }
抽象工厂类:
public abstract class Factory{ public abstract Product createProduct(); }
具体工厂类:
public class ConcreteFactory extends Factory { @Override public Product createProduct(){ return new ConcreateProductA; } }
客户测试主类:
public class Client { public static void main(String[] args){ Factory factory = new ConcreteFactory(); Product product = factory.createProduct(); product.method(); } }