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

目录

创建型设计模式:

结构型设计模式:

行为型设计模式:

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(工厂方法模式)》

优缺点


优点:

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

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

    原文作者:迷死特兔
    原文地址: https://blog.csdn.net/cooldragon/article/details/52171195
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞