设计模式总结之Factory Method Pattern(工厂方法模式)

时间:2022-10-02 16:57:54

目录

创建型设计模式: 结构型设计模式: 行为型设计模式:



Simple Factory Pattern(简单工厂模式)

GoF中认为简单工厂模式是工厂方法的一个特例。

结构

  设计模式总结之Factory Method Pattern(工厂方法模式)

例子

设计模式总结之Factory Method Pattern(工厂方法模式) 

优缺点

优点:
优点:

简单,结合单例模式更加方便和节省资源。

缺点:
增加新的产品时,需要修改工厂类的if…else逻辑,不符合开闭原则。


Factory Method Pattern(工厂方法模式)


意图

定义一个用于创建对象的接口,让子类决定实例化哪一个类。Factory Method 使一个类的实例化延迟到其子类。

适用性

当一个类不知道它所必须创建的对象的类的时候。
当一个类希望由它的子类来指定它所创建的对象的时候。
当类将创建对象的职责委托给多个帮助子类中的某一个,并且你希望将哪一个帮助子类是代理者这一信息局部化的时候。


结构

设计模式总结之Factory Method Pattern(工厂方法模式) 
参与者:
• Product(抽象产品) 
— 定义工厂方法所创建的对象的接口。 
• ConcreteProduct(具体产品) 
— 实现Product接口。
• Creator(抽象工厂类) 
— 声明工厂方法,该方法返回一个 Product类型的对象。 Creator也可以定义一个工厂方 法的缺省实现,它返回一个缺省的 ConcreteProduct对象。 
— 可以调用工厂方法以创建一个 Product对象。 
• ConcreteCreator(具体工厂类) 
— 重定义工厂方法以返回一个 ConcreteProduct实例。 


例子

  设计模式总结之Factory Method Pattern(工厂方法模式)

优缺点

优点:

首先,良好的封装性,代码结构清晰。一个对象创建是有条件约束的,如一个调用者需要一个具体的产品对象,只要知道这个产品的类名(或约束字符串)就可以了,不用知道创建对象的艰辛过程,降低模块间的耦合。

工厂方法模式是典型的解耦框架。高层模块只需要知道产品的抽象类,其他的实现类都不用关心,符合迪米特法则,我不需要的就不要去交流;也符合依赖倒置原则,只依赖产品类的抽象;当然也符合里氏替换原则,使用产品子类替换产品父类,没问题!