美文网首页达叔的朋友圈们
大话设计模式读书笔记-8工厂方法模式

大话设计模式读书笔记-8工厂方法模式

作者: QuietHeart | 来源:发表于2020-03-21 10:05 被阅读0次

第8章 雷锋依然在人间——工厂方法模式

定义

定义一个工厂类,包含创建对象的接口,用不同的子类工厂决定实例化那个类。将一个类的实例化,推迟到不同工厂子类中进行,而非单一工厂创建接口的不同分支。

优点:改进简单工厂模式,将创建对象的部分进一步隔离开来,使类实现更符合开放-封闭原则,客户端满足需求变化代码改动尽量少,

即,将简单工厂模式中创建对象的工厂类进一步抽象,定义公共抽象工厂类,再用继承它的具体工厂类创建具体对象,将创建对象的部分从函数分支中隔离出来,增加新对象就增加工厂类,无需修改已有类函数。

实现

  • Creator: 抽象工厂类,声明抽象公共工厂方法Create(),返回抽象Product类
  • ConcreteCreator: 具体实现抽象工厂方法创建对应的具体ConcreteProduct对象(返回Product类)
  • Product: 抽象操作对象,声明公共抽象操作Opera()
  • ConcreteProduct: 具体操作对象类,具体实现公共操作接口Opera()。
  • Client: 声明Creator类并创建ConcreteCreator具体工厂,调用具体工厂Create()创建具体对象返回Product类,在调用实现的公共Opera()操作。

实现图:

img

使用图:

img

简单工厂模式与工厂模式对比

简单工厂模式

  • 简单工厂模式实现

    1. 定义抽象父类描述公共操作,不同子类对象具体实现操作;
    2. 用简单工厂创建子类对象,返回抽象父类型,创建的类型用分支结合参数判断。
  • 简单工厂模式客户端

    1. 指定具体工厂类(定义简单工厂对象)
    2. 指定工厂类参数(操作字符)
    3. 工厂类创建返回相应的操作对象
    4. 使用公共抽象接口操作

简单工厂模式总结:通过继承将具体对象操作封装,使用户只使用抽象公共接口操作;通过简单工厂将对象的创建独立出来,使用户不必关心创建特定对象的过程;通过多态返回对象抽象父类,隔离具体类型,使用户不必关心返回对象的具体类型;但是没有将对象创建的过程隔离完全(即如果支持新的对象,还是要通过修改工厂类的方式;如果使用新的对象,还是要修改客户端所有为工厂类指定参数的地方替换参数)。

工厂模式

  • 工厂模式实现

    1. 定义抽象父类描述公共操作,不同子类对象实现具体操作;
    2. 定义抽象工厂描述公共创建接口;
    3. 不同的具体工厂子类创建对应操作类(返回抽象父类);
  • 工厂模式客户端

    1. 指定具体工厂类
    2. 使用公共的工厂抽象接口创建相应对象。
    3. 使用公共抽象接口操作

工厂模式总结:通过继承将具体对象操作封装,使用户只使用公共对象接口操作;通过抽象工厂将对象的创建独立出来,使用户不必关心创建对象的过程;通过具体工厂实现的创建,将不同对象的创建从类型判断分支中分离(即,如果支持新的对象,只需增加具体工厂类无需修改已有类;如果使用新的对象,只需修改具体工厂类创建对象前的具体工厂类型,无需修改所有后面,比如不用修改创建参数);通过多态将对象返回对象抽象父类,隔离具体类型,使用户不必关心返回对象的具体类型。

注:定义对象后,定义对象之处的对象类别修改之后,对象名字可以共用,这就叫封装了具体的创建过程(“不需要关心类”)或者关心的很少了。

相关文章

  • 大话设计模式之_工厂模式

    大话设计模式之_工厂模式 工程方法(即简单工厂模式simpleFactory,或静态工厂方法 static fac...

  • Design Patterns Talk - Factory M

    《大话设计模式》第 8 章 - 工厂方法模式 的 Swift 实现。 问题 通过增加工厂方法的子类为新增的运算类生...

  • 代码段简单学习设计模式 -- 抽象工厂模式

    《JAVA与模式》之抽象工厂模式 大话设计模式 抽象工厂模式(Abstraci Factory): 提供一个创...

  • iOS开发之设计模式 - 工厂模式

    由《大话设计模式 - 工厂模式》的OC和部分Swift的语言转义 工厂模式 继上一篇《代理模式》 工厂模式, 定义...

  • 大话设计模式读书笔记-8工厂方法模式

    第8章 雷锋依然在人间——工厂方法模式 定义 定义一个工厂类,包含创建对象的接口,用不同的子类工厂决定实例化那个类...

  • 工厂模式(Factory Pattern)

    大话设计模式之陈狗养猪记_工厂模式 概念: 工厂模式(Factory Pattern)是 Java 中最常用的...

  • 2021-11-16 - 学习记录

    设计模式学习:创建型:工厂(工厂方法,抽象工厂),建造者,单例,原型 设计模式:工厂模式 简单工厂 工厂方法 抽象工厂

  • 工厂模式

    工厂模式 就是工厂---生产-->产品 在设计模式中,分为 简单工厂模式, 工厂方法模式,抽象工厂模式. 工厂模式...

  • PHP-浅谈单例模式和工厂模式

    PHP中常用的设计模式有单例模式、工厂模式(简单工厂模式、工厂方法模式和抽象工厂方法模式)、适配模式、策略模式。 ...

  • 设计模式-工厂模式

    设计模式1 设计模式2 工厂模式 工厂模式可简单的分为三类:简单工厂,工厂方法,抽象工厂 简单工厂模式 定义 简单...

网友评论

    本文标题:大话设计模式读书笔记-8工厂方法模式

    本文链接:https://www.haomeiwen.com/subject/maxnshtx.html