zoukankan      html  css  js  c++  java
  • [Design] Builder Pattern

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

    建造模式的结构

    • 1、抽象建造者角色

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

    • 2、具体建造者角色

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

    • 3、导演者角色

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

    • 4、产品角色

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

  • 相关阅读:
    C# 中Async 和 Await 的用法,异步等待执行结果
    C# 事件发布和订阅
    C# 多线程使用信号量控制处理效率,统计活动中的线程
    C# 委托和泛型委托示例
    C# 数据库批量插入数据之 —— SqlBulkCopy、表值参数
    WinRar DOS命令大全带详细参数rar/zip/7z压缩文件解密
    Magic.Orm 基于C#的ORM框架,支持Sql Server/MySql/Oracle/Access/Sqlite等数据库,支持Lambda表达式快速上手0难度
    SqlServer使用SqlBulkCopy批量新增和更新数据,快速高效
    Flink内存模型
    Linux 查找替换
  • 原文地址:https://www.cnblogs.com/abeen/p/1442206.html
Copyright © 2011-2022 走看看