第一次写设计模式,之前只是看书,没有系统的总结,所以开始设计模式系列,不得不说是一个契机,本人才疏学浅,尽善尽美。
简单工厂模式相信大家看过设计模式的都觉得十分简单,更像是一种编程习惯。我们先来看看前人的总结吧。
工厂方法模式(英语:Factory method pattern)是一种实现了“工厂”概念的面向对象设计模式。就像其他创建型模式一样,它也是处理在不指定对象具体类型的情况下创建对象的问题。工厂方法模式的实质是“定义一个创建对象的接口,但让实现这个接口的类来决定实例化哪个类。工厂方法让类的实例化推迟到子类中进行[1]。
下面给出简单工厂模式的类图。类图参考维基百科。
从上面类图可以看出简单工厂模式包含三个角色,工厂类(Factory)、产品接口类(Product)和具体产品(ProductX)。工厂负责生产具体产品,但是工厂类需要知道产品的类型,才能够生产具体产品,下面把上面的类图翻译成具体Java代码来理解下:
产品接口
public interface Product { public void method(); }
具体的产品接口
public class ProductA implements Product { @Override public void method() { System.out.println("这是产品A"); } }
public class ProductB implements Product { @Override public void method() { System.out.println("这是产品B"); } }
工厂类
public class Factory { public Product createProduct(String productType) { if (null == productType) { return null; } if (Objects.equals(productType, "A")) { return new ProductA(); } else if (Objects.equals(productType, "B")) { return new ProductB(); } else { return null } } }
客户端代码,打印出结果
public class Client { public static void main(String[] args) { Product productA = Factory.createProduct("A"); productA.method(); Product productB = Factory.createProduct("B"); productB.method(); } }
参考文献:
1.设计模式:可复用面向对象软件的基础