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

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

要点
  • 简单工厂模式中,工厂类处于整个工厂的核心位置,逻辑繁重,具体的产品与工厂类之间的耦合度高,严重影响了系统的灵活性和扩展性。
  • 工厂方法模式中,将单个工厂分割为多个单一的工厂,针对不同的产品提供不同的工厂。
定义
定义一个用于创建对象的接口,让子类决定将哪一个类实例化。工厂方法模式将让一个类的实例化延迟到其子类。
UML类图
image.png
角色以及职责
  • Product(抽象产品):定义产品的接口,是工厂方法模式所创建对象的超类,也就是产品对象的公共父类。
  • ConcreteProduct(具体产品):实现了抽象产品接口,某种类型的具体产品由专门的具体工厂创建,具体工厂和具体产品之间一一对应。
  • Factory(抽象工厂):声明了工厂方法,用于返回一个产品,抽象工厂是工厂方法模式的核心,所有创建对象的工厂类都必须实现该接口。
  • ConcreteFactory(具体工厂):抽象工厂类的子类,实现了抽闲工厂中定义的工厂方法。并可由客户端调用,返回一个具体产品的实例。
总结
  • 主要优点:
    • 工厂方法用来创建客户所需要的产品,同时还向客户隐藏了哪些具体产品类将被实例化这一细节,用户只需要关系所需产品对应的工厂,无须关心创建细节,甚至无须知道具体产品类的类名。
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容