zoukankan      html  css  js  c++  java
  • 5.建造者模式

    • 一、角色
      • Product(产品角色):具体的产品对象
      • Builder(抽象建造者):创建一个Product对象的各个部件指定的抽象接口
      • ConcreteBuilder(具体建造者):实现抽象接口,构建和装配各个部件
      • Director(指挥者):构建一个使用Builder接口的对象。它主要是用于创建一个复杂的对象,它主要有两个作用,一是:隔离了客户与对象的生产过程,二是:负责控制产品对象的生产过程
    • 二、适用场景
      • 隔离复杂对象的创建和使用,相同的方法,不同执行顺序,产生不同事件结果
      • 多个部件都可以装配到一个对象中,但产生的运行结果不相同
      • 产品类非常复杂或者产品类因为调用顺序不同而产生不同作用
      • 初始化一个对象时,参数过多,或者很多参数具有默认值
      • Builder模式不适合创建差异性很大的产品类,产品内部变化复杂,会导致需要定义很多具体建造者类实现变化,增加项目中类的数量,增加系统的理解难度和运行成本
      • 需要生成的产品对象有复杂的内部结构,这些产品对象具备共性
    • 三、实例
      • 图-1中的Meal是产品角色,MealBuilder是抽象建造者角色,MealA和MealB是具体建造者角色,KFCWaiter是指挥者角色,这是一个生成肯德基套餐产品的实例,KFCWaiter依赖抽象建造者实现不同套餐产品对象生成,KFCWaiter实例注入不同的具体建造者实现不同套餐产品实例的生成
      • 代码地址:https://github.com/lanhei/DesignPattern/tree/master/src/com/lanhei/patterns/builder
      图-1
  • 相关阅读:
    常用Git代码托管服务分享
    .NET中操作IPicture、IPictureDisp
    Git学习笔记与IntelliJ IDEA整合
    螺旋队列问题
    杂题3道
    .NET 配置文件简单使用
    C++之Effective STL
    不容易理解的 lock 和 merge
    状态模式
    观察者模式
  • 原文地址:https://www.cnblogs.com/zhongj/p/11245745.html
Copyright © 2011-2022 走看看