• 《设计模式之禅》学习笔记(九)


    第9章 抽象工厂模式

    抽象工厂模式(Abstract Factory Pattern):

    Provide an interface for creating families of related or dependent objects without specifying their concrete classes.(为创建一组相关或相互依赖的对象提供一个接口,并且无需指定它们的具体类。)

           

    抽象工厂模式是工厂方法模式的升级版本,在有多个业务品种、业务分类时,通过抽象工厂模式产生需要的对象是一种非常好的解决方式。

           

    产品族(产品线):功能相关联的产品组成的家族。一般是位于不同的等级结构中的相同位置上。每一个产品族中含有产品的数目,与产品等级结构的数目是相等的,形成一个二维的坐标系,水平坐标是产品等级结构,纵坐标是产品族,叫做相图。对于每一个产品族,都有一个具体工厂,或者在抽象工厂类中就有一个对应的创建方法。比如女娲造人中的人种(黄种人、白种人、黑种人)。

    产品等级结构:一种产品内部的不同等级。比如女娲造人中的性别(男、女)。

    区别:由产品族区分出来不同类型的产品。产品等级结构只是产品内部的区别,不能用来区分不同的产品。

           

    抽象工厂模式的优点:

    封装性,每个产品的实现类不是高层模块要关心的。只要知道对应的工厂类是谁,就能创建出想要的对象。

    产品族内的约束为非公开状态。例如生产男女的比例。

           

    抽象工厂模式的缺点:

    最大的缺点就是产品族扩展非常困难,不符合开闭原则。

           

    抽象工厂模式的使用场景:

    当一个对象族都有相同的约束,则可以使用抽象工厂模式。

           

    抽象工厂模式的注意事项:

    抽象工厂模式扩展产品族非常困难,但很容易扩展产品等级结构。

  • 相关阅读:
    缓慢画点功能实现的两个方法
    c++编译器对新建字符型数组内部数据的初始化
    在win7下用net命令无法实现对用户的创建(未完成)
    关于sleep函数的一些问题和资料
    C++ 临时笔记
    boost::progress_timer 与 boost::progress_display
    《C++ Primer》 Part IV(ObjectOriented and Generic Programming)
    Linux下常用软件
    《C++STL基础及应用》读书笔记
    boost::asio
  • 原文地址:https://www.cnblogs.com/qwertWZ/p/2835901.html
Copyright © 2020-2023  润新知