创建型设计模式-工厂方法模式

解决核心问题:为了解决简单工厂模式新增具体产品时,需要修改工厂类的逻辑的问题。这违背了开闭原则。

要点
  • 简单工厂模式中,工厂类处于整个工厂的核心位置,逻辑繁重,具体的产品与工厂类之间的耦合度高,严重影响了系统的灵活性和扩展性。
  • 工厂方法模式中,将单个工厂分割为多个单一的工厂,针对不同的产品提供不同的工厂。
定义
定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式将让一个类的实例化延迟到其子类。
UML类图
创建型设计模式-工厂方法模式_第1张图片
image.png
角色以及职责
  • Product(抽象产品):定义产品的接口,是工厂方法模式所创建对象的超类,也就是产品对象的公共父类。
  • ConcreteProduct(具体产品):实现了抽象产品接口,某种类型的具体产品由专门的具体工厂创建,具体工厂和具体产品之间一一对应。
  • Factory(抽象工厂):声明了工厂方法,用于返回一个产品,抽象工厂是工厂方法模式的核心,所有创建对象的工厂类都必须实现该接口。
  • ConcreteFactory(具体工厂):抽象工厂类的子类,实现了抽闲工厂中定义的工厂方法。并可由客户端调用,返回一个具体产品的实例。
总结
  • 主要优点:
    • 工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪些具体产品类将被实例化这一细节,用户只需要关系所需产品对应的工厂,无须关心创建细节,甚至无须知道具体产品类的类名。

你可能感兴趣的:(创建型设计模式-工厂方法模式)