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


    第9章 抽象工厂模式

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

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

           

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

           

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

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

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

           

    抽象工厂模式的优点:

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

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

           

    抽象工厂模式的缺点:

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

           

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

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

           

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

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

  • 相关阅读:
    JAVA线程池管理及分布式HADOOP调度框架搭建
    技术人员如何创业《二》 合伙人的模式
    JavaScript中的运动数学函数(持续更新)
    JavaScript中的加号
    JavaScript 函数绑定 Function.prototype.bind
    基于C#的波形显示控件的实现[附完整源码下载]
    JavaScript中的声明提升
    JavaScript & HTML5 Canvas 概览 更新时间201404111805
    《编写高质量代码——Web前端开发修炼之道》读后随笔
    B树/B+树/二叉搜索树/AVL树/红黑树
  • 原文地址:https://www.cnblogs.com/qwertWZ/p/2835901.html
Copyright © 2020-2023  润新知