• [Design] Builder Pattern


    创建模式是对类的实例化过程的抽象化,分为类的创建模式和对象的创建模式。
    类的创建模式
      使用继承关系把类的创建过程延迟到子类,从而封装了客户端将得到哪些具体类的信息,并且隐藏了这些类的实例是如何创建和组合在一起的。
    对象的创建模式
          把对象的创建过程动态的委派给另一个对象,从来动态的决定客户端将得到哪些具体类的实例,以及这些类是实例是如何创建和组合在一起的。
    --------------------------------------------------------
     建造模式
      建造模式可以将一个产品的内部表象与产品的生成过程分割开来,从而可以使一个建造过程生成具有不同的内部表象的产品对象。
      使用建造模式可以使客户端在不需要知道所生成的产品对象有哪些零件,每个产品对应的零件彼此有何不同,是怎么样建造和组合起来的。
    使用情况
      1. 产品对象有复杂的内部结构,每一个内部成分本身可以是对象,也可以仅仅是一个对象的一个组成成分。
      2. 产品对象的属性相互依赖,建造模式可以强制实行一种分步骤进行的建造过程。
      3.在对象的创建过程中会使用到系统中的其他一些对象,这些对象在产品对象的创建过程中不是容易得到的。
    达到效果
      1.使得产品的内部表象可以独立地变化。使用建造模式可以使客户端不必知道产品内部组成的细节。
      2.每一个Builder都相对独立,而与其他的Builder 无关。
      3.模式所建造的最终产品更易于控制。

    建造模式的结构

    • 1、抽象建造者角色

        用一个抽象接口,来规范出产品对象的各个组成成分的建造。一般此接口对应用程序商业逻辑无关。

    • 2、具体建造者角色

        此角色与应用程序逻辑密切相关,在应用程序调用下创建产品的实例。它实现抽象建造者所声明的接口,给出一步一步地完成创建产品实例的操作,完成后提供产品的实例。

    • 3、导演者角色

        担任这个角色的类调用具体建造者角色以创建产品对象,但此角色并没有产品类的具体知识,真正拥有产品类具体知识的是具体建造者角色。

    • 4、产品角色

        产品角色是要建造的复杂对象。一般一个系统中会有多于一个的产品类,而且这些产品类并不一定有共同的接口,完全可以是不相关联的。

  • 相关阅读:
    阿里云centos7搭建php+nginx环境
    python初学者总结
    python -virtualenvwrapper 切换不同的python版本
    You are using pip version 8.1.2, however version 9.0.1 is available.
    centos下安装pip时失败:
    mysql 导入数据是报错:2006
    CentOS下简单的MySQL数据库操作
    centos-安装mysql
    CentOS7.x 报错 There are no enabled repos.
    nginx查看变量值
  • 原文地址:https://www.cnblogs.com/abeen/p/1442206.html
Copyright © 2020-2023  润新知