结构
意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用性
  • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
  • 当构造过程必须允许被构造的对象有不同的表示时。

 1  using System;
 2
 3     // These two classes could be part of a framework,
 4     // which we will call DP
 5     // ===============================================
 6
 7     class Director
 8     {
 9         public void Construct(AbstractBuilder abstractBuilder)
10         {
11             abstractBuilder.BuildPartA();
12             if (1==1 ) //represents some local decision inside director
13             {
14                 abstractBuilder.BuildPartB();
15             }
16             abstractBuilder.BuildPartC();
17         }
18
19     }
20
21     abstract class AbstractBuilder
22     {
23         abstract public void BuildPartA();
24         abstract public void BuildPartB();
25         abstract public void BuildPartC();
26     }
27
28     // These two classes could be part of an application
29     // =================================================
30
31     class ConcreteBuilder : AbstractBuilder
32     {
33         override public void BuildPartA()
34         {
35             // Create some object here known to ConcreteBuilder
36             Console.WriteLine("ConcreteBuilder.BuildPartA called");
37         }
38
39         override public void BuildPartB()
40         {
41             // Create some object here known to ConcreteBuilder
42             Console.WriteLine("ConcreteBuilder.BuildPartB called");
43         }
44
45         override public void BuildPartC()
46         {
47             // Create some object here known to ConcreteBuilder
48             Console.WriteLine("ConcreteBuilder.BuildPartC called");
49         }
50     }
51
52     /// <summary>
53     ///    Summary description for Client.
54     /// </summary>
55     public class Client
56     {
57         public static int Main(string[] args)
58         {
59             ConcreteBuilder concreteBuilder = new ConcreteBuilder();
60             Director director = new Director();
61
62             director.Construct(concreteBuilder);
63
64             return 0;
65         }
66     }

建造者模式

转载于:https://www.cnblogs.com/ziranquliu/p/4669325.html

创建型设计模式之建造者模式(Builder)相关推荐

  1. 07、人人都会设计模式:建造者模式--Builder

    PS:转载请注明出处 作者: TigerChain 地址: http://www.jianshu.com/p/300cbb9ee7f2 本文出自 TigerChain 简书 人人都会设计模式 教程简介 ...

  2. Android设计模式之建造者模式builder

    今天小编来说一下Android中的一种设计模式--建造者模式Builder 绪论: 那么对于Android初级来说,Builder设计模式可能在我们开发中用过的很少,但是我们可能见过,我们经常用的Al ...

  3. 创建型设计模式之工厂模式

    文章目录 一.工厂设计模式 二.工厂设计模式详解 1.简单工厂模式 2. 工厂方法模式 3. 抽象工厂模式 总结 一.工厂设计模式 工厂模式就类比实际生活中的工厂,在实际生活中,用户从来不会关系一个物 ...

  4. C++设计模式之建造者模式(builder)(创建型)

    软件领域中的设计模式为开发人员提供了一种使用专家设计经验的有效途径.设计模式中运用了面向对象编程语言的重要特性:封装.继承.多态,真正领悟设计模式的精髓是可能一个漫长的过程,需要大量实践经验的积累. ...

  5. 一天一个设计模式之建造者模式(Builder)

    建造者模式,属于创建型模式,其目的在于将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 适用情况: • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时. ...

  6. Python 设计模式之建造者模式 Builder Pattern

    #引入建造者模式 肯德基的菜单上有 薯条, 鸡腿,鸡翅,鸡米花,可乐,橙汁,火腿汉堡,至尊虾汉堡,牛肉汉堡 , 鸡肉卷等这些单品,也有很多套餐. 比如 套餐1:鸡翅,至尊虾汉堡,可乐,薯条 套餐2:鸡 ...

  7. 设计模式之—建造者模式(Builder)-Java实现

    Builder模式,将产品的内部表象和产品的生成过程分割开来,从而使一个建造过程生成具有不同的内部 表象的产品对象.建造模式使得产品内部表象可以独立的变化,客户不必知道产品内部组成的细节.建造模式可以 ...

  8. UE4 C++设计模式:建造者模式(Builder Pattern)

    目录 描述 套路 使用场景 优缺点 UE4实践 具体复杂产品-门派角色 抽象建造者-角色构造器 具体建造者-纯阳角色构造器 具体建造者-七秀角色构造器 创建指挥者(Director)-角色创建指挥器 ...

  9. 设计模式之建造者模式(Builder)

    建造者模式原理:建造模式主要是用于产生对象的各个组成部分,而抽象工厂模式则用于产生一系列对象,建造者模式而且要求这些对象的组成部分有序. 代码如下: #include <iostream> ...

最新文章

  1. 用python做一个图片验证码
  2. 思科2015校园招聘笔试面试总结
  3. 如何修复修复损坏的TAU G2的.u2文件
  4. 随机化算法-----模拟退火
  5. java爬虫工具xpath提取,2020-07-16--爬虫数据提取--xpath
  6. 从数百万个光纤(而不是数千个线程)中查询数据库
  7. Apache PLC4X开发者向企业下最后通牒:如不提供资助将停止支持
  8. 洛谷——P1014 [NOIP1999 普及组] Cantor 表
  9. 使用Python定制词云
  10. 思科路由器常用配置命令大全
  11. 复习,网课,视频回放,太慢怎么办,试试倍速播放吧 (无需下载)
  12. 浅谈管理软件的功能与作用-—以Nvisual综合布线可视化运维管理平台和进销存管理软件为例
  13. 小米无线路由器服务器用户名和密码忘了,小米路由器登陆入口用户名和密码指南...
  14. 自媒体平台批量文章采集
  15. Java重命名文件的方法_java重命名文件(附道客巴巴文档下载方法)
  16. 当区块链遇上财政电子票据
  17. hash函数(哈希表)
  18. cpp头文件方法大全
  19. python数据分布统计_Python 数据可视化:数据分布统计图和热图
  20. 薄荷 (2009-06-07)

热门文章

  1. STL六大组件:分配器、容器、迭代器、算法、仿函数、适配器
  2. rhel5之sendmail、dovecot配置
  3. JAVA 和.NET在安全功能的比较
  4. jQuery学习笔记6:表单选择器
  5. 看懂 ,学会 .NET 事件的正确姿势
  6. 有关进行单元测试的时候,不去调本地代码去掉dubbo上的服务
  7. 使用图片方式自定义iOS导航栏navigationItem的backBarButtonItem
  8. RMB符号的几种显示方式。
  9. Exchange server 2010 beta安装部署流程
  10. Five Hundred Miles——The Innocence Mission