简介

在简单工厂模式中,工厂类负责为所有具体产品类创建对象,因此当新增或修改具体产品类时,也需要修改工厂类,这在一定程度上违背了 OCP 原则。

在工厂方法模式中,不再提供统一的工厂类来创建所有产品对象,而是为不同的具体产品类提供不同的工厂类,系统提供一个与产品等级结构相对应的工厂等级结构。

工厂方法模式是一种创建型模式。在工厂方法模式中,抽象工厂类负责声明用于创建产品对象的公共接口,工厂子类负责创建产品对象,这样做的目的是将产品类的实例化操作延迟到工厂子类中,即由工厂子类决定实例化哪个具体产品类。


角色


UML 类图

factory-method.png


Demo

https://github.com/tim-chow/DesignPattern/tree/master/FactoryMethod