建造者模式(Builder):将一个复杂对象的构建与它的表示分离,使得同样的建造过程可以创建不同的表示。

1、Builder是什么?

是创建一个Product对象的各个部件指定的抽象接口。

2、ConcreteBuilder 是什么?

是具体建造者,实现Builder接口,构造和装配各个部件。

3、Director是什么?

指挥者,构建一个使用Builder接口的对象。

建造者模式代码

using System;
using System.Collections.Generic;
using System.Text;

namespace Builder
{
    class Program
    {
        static void Main(string[] args)
        {
            Director director = new Director();
            Builder builder = new ConcreteBuilder();
            director.Construct(builder);
            Product p1 = builder.GetResult();
            p1.Show();
            Console.ReadLine();
        }
    }
    abstract class Builder
    {
        public abstract void BuilderA();
        public abstract void BuilderB();
        public abstract Product GetResult();
    }
    class Product
    {
        IList<string> parts = new List<string>();
        public void Add(string part)
        {
            parts.Add(part);
        }
        public void Show()
        {
            Console.WriteLine("产品创建------");
            foreach (string part in parts)
            {
                Console.WriteLine(part);
            }
        }
    }
    class ConcreteBuilder : Builder
    {
        private Product product = new Product();
        public override void BuilderA()
        {
            product.Add("部件A");
        }
        public override void BuilderB()
        {
            product.Add("部件B");
        }
        public override Product GetResult()
        {
            return product;
        }
    }
    class Director
    {
        public void Construct(Builder builder)
        {
            builder.BuilderA();
            builder.BuilderB();
        }
    }
}

建造者模式是当创建复杂对象的算法应当独立于该对象的组成部分以及它们的装配方式时使用的模式。

转载于:https://www.cnblogs.com/gooliugle/archive/2010/04/27/1722124.html

大话设计模式读书笔记11----建造者模式(Builder)相关推荐

  1. 大话设计模式读书笔记之原型模式

    由于大话这本书是以C#语言为基础写就的,本设计模式的例子中使用了一些c#中的API,因此就不再引用此书中的例子了,参考了一篇博客园中的大神写就的浅显易懂的JAVA版原型模式,在此奉上链接,以供大家学习 ...

  2. 大话设计模式读书笔记10----外观模式(Facade)

    外观模式(Facade):为子系统中的一组接口提供一个一致的界面,此模式定义了一个高层接口,这个接口使得这一子系统更容易使用. 1.在设计初级阶段,应该要有意识的将不同的两个层分离. 2.层与层之间建 ...

  3. 大话设计模式读书笔记--4.代理模式

    生活中的例子: 班主任让班长通知班委下午3点开会 班长就是班主任的代理 代理模式的目的是: 隐藏真实访问对象,同时可以处理别的事情 定义 代理模式:为其他对象提供一种代理以控制对这个对象的访问 也就是 ...

  4. 大话设计模式读书笔记--6.原型模式

    简单的复制粘贴极有可能造成重复代码的灾难, 但是java中提供了克隆的功能, 如果一个对象创建过程复杂,又要频繁使用, 在初始化信息不发生变化的情况下,应当采取克隆而不是new一个对象 定义 原型模式 ...

  5. 大话设计模式读书笔记之桥接模式

    1.定义: 将抽象部分与它的实现部分分离,使它们都可以独立地变化. 需要理解,什么叫抽象与它的实现分离,并不是说,让抽象类与其派生类分离,因为这没任何意义.实现指的是抽象类和它的派生类用来实现自己的对 ...

  6. 大话设计模式读书笔记之状态模式

    1.定义:当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类.主要解决的问题是当控制一个对象状态转换的条件表达式过于复杂时把状态的判断逻辑转移到表示不同状态的一系列类当中,可以把复 ...

  7. 大话设计模式读书笔记

    主题 概要 设计模式 大话设计模式读书笔记 编辑 时间 新建 20170423 序号 参考资料 1 大话设计模式 重新看了一遍设计模式,除了一些已经特别熟悉的模式,都自己敲了一遍代码,有些豁然开朗的感 ...

  8. 设计模式读书笔记-----工厂方法模式

    一.问题 在前一章<设计模式读书笔记-----简单工厂模式>中通过披萨的实例介绍了简单工厂模式.在披萨实例中,如果我想根据地域的不同生产出不同口味的披萨,如纽约口味披萨,芝加哥口味披萨.如 ...

  9. 设计模式读书笔记(三) Builder(建造者)模式

    一.模式介绍 在平常的时候,我们不管是上KFC还是去买组装电脑,我们都会遇到这样一个现象:就是不管我们的需求怎么变化,我们只要点下了我们想要的餐品,服务员下单完毕之后,不用多久,我们的自定义套餐就上来 ...

最新文章

  1. oracle重做日志文件版本不一致问题处理
  2. 斗地主程序设计c语言,C语言斗地主游戏v0.1
  3. Laravel中的Blade模版
  4. 1.4- 定时任务总结之九句箴言
  5. RS232, RS422, RS485 引脚布局区别
  6. 判断wifi连接是否可用
  7. NAACL2021 | 苏大阿里提出:一种统一的基于跨度的意见挖掘方法
  8. 2月10日 感知器+浅层神经网络+反向传播+tensorflow
  9. 第一财经周刊:硅谷就是这样
  10. 施耐德SoMachine Basic中存在高危漏洞(CVE-2018-7783),可读取目标系统上的任意文件...
  11. Laravel自定义webpack.mix.js
  12. 王之泰《面向对象程序设计(java)》课程学习总结
  13. Photoshop CS6 实例-用椭圆选框工具设计光盘封面
  14. DFS/BFS+思维 HDOJ 5325 Crazy Bobo
  15. 在VMware WorkStation中安装Windows Server 2016
  16. 辛东方重组百花园传媒 人员大调整
  17. 2月14,情人节双语送祝福!
  18. 如何区分正反馈,负反馈放大电路?【模电02课】
  19. Java 日期的各种操作
  20. 解决 “VS2015 的warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失”的方法

热门文章

  1. 第九课:循环链表与双向链表
  2. 清华大学郑莉c++答疑
  3. 录取率查询和申请结果查询平台分享
  4. double转整数问题
  5. SpringBoot实现Java高并发秒杀系统之DAO层开发(一)
  6. 大数据开发实战:数据仓库技术
  7. Linux系统高可用集群软件之Keepalived
  8. Color Tint
  9. [Ubuntu] 解决 pip 安装 lxml 出现 x86_64-linux-gnu-gcc 异常
  10. Linux cut用法