建造者模式是我的"设计模式"里创建型模式里的最后一篇,这种模式在实现中,很多架构都用到了,如MVC,MVP,MVVM,它们都是有建造者模式的精髓的,即,创建与表现分享,我们的MVC何尝不是,我们的MVVM又何尝不是呢,我们做软件的,换肤是常有的事,其实换肤的实现不就是建造者模式最好的体现吗,呵呵.

定义

将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示,这样的设计模式被称为建造者模式。

何时能用到它?

1 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
2 当构造过程必须允许被构造的对象有不同表示时。

建造者模式的结构图

建造者模式实现说明

1 Person:为一个主对象,它可能很大,很复杂。
2 Man:为Person下的一个分支,一个子类,本例中指男人对象
3 PersonDirector:为建造者模式中的指导者,它决定的创建产品的过程,顺序
4 PersonBuilder:实现建造过程所需要的行为接口,PersonDirector中会用到它

5 ManBuilder:这是一个具体的执行者,它可能有多个,每个执行者负责自己的部分

建造者模式的C#实现

  public class Person{public string Name { get; set; }public short Gander { get; set; }public String Head { get; set; }public String Body { get; set; }public String Foot { get; set; }public void SetHead(string content) { Console.WriteLine(content); Head = content; }public void SetBody(string content) { Console.WriteLine(content); Body = content; }public void SetFoot(string content) { Console.WriteLine(content); Foot = content; }public override string ToString(){return string.Format("Head={0},Body={1},Foot={2}", Head, Body, Foot);}}public class Man : Person{public Man(){this.Gander = 1;}}public interface PersonBuilder{void buildHead();void buildBody();void buildFoot();Person buildPerson();}public class PersonDirector{public Person constructPerson(PersonBuilder pb){pb.buildHead();pb.buildBody();pb.buildFoot();return pb.buildPerson();}}public class ManBuilder : PersonBuilder{Person person;public ManBuilder(){person = new Man();}public void buildBody(){person.SetBody("建造男人的身体");}public void buildFoot(){person.SetFoot("建造男人的脚");}public void buildHead(){person.SetHead("建造男人的头");}public Person buildPerson(){return person;}}
}

下面是调用程序

    PersonDirector pd = new PersonDirector();Person person = pd.constructPerson(new ManBuilder());Console.WriteLine(person.ToString());

程序截图

本文转自博客园张占岭(仓储大叔)的博客,原文链接:说说设计模式~建造者模式(Builder),如需转载请自行联系原博主。

说说设计模式~建造者模式(Builder)相关推荐

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

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

  2. 大话设计模式--建造者模式 Builder -- C++实现实例

    1. 建造者模式,将一个复杂对象的构建与它的表示分离, 使得同样的构建过程可以创建不同的表示. 用户只需要指定需要建造的类型就可以得到他们,而具体建造的过程和细节就不需要知道了. 关键类Directo ...

  3. 设计模式-建造者模式 builder

    建造者者模式角色: 具体产品(抽象产品) 抽象建造者 具体建造者 指挥者(director) 拓展:当一个类属性过多时,造对象不便捷采用 静态内部类 链式 创建对象 package com.qf.bu ...

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

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

  5. 重识设计模式-建造者模式(Builder Pattern)

    本文已同步发表到我的技术微信公众号,扫一扫文章底部的二维码或在微信搜索 "程序员驿站"即可关注,不定期更新优质技术文章.同时,也欢迎加入QQ技术群(群号:650306310)一起交 ...

  6. Python设计模式-建造者模式

    Python设计模式-建造者模式 代码基于3.5.2,代码如下; #coding:utf-8 #建造者模式 class Burger():name = ""price = 0.0d ...

  7. 设计模式-建造者模式(转自:http://www.cnblogs.com/cbf4life/archive/2010/01/14/1647710.html)...

    11.1 变化是永恒的 又是一个周三,快要下班了,老大突然拉住我,喜滋滋地告诉我:"牛叉公司很满意我们做的模型,又签订了一个合同,把奔驰.宝马的车辆模型都交给我们公司制作了,不过这次又额外增 ...

  8. 设计模式 建造者模式_设计模式:建造者

    设计模式 建造者模式 有时需要在应用程序中创建一个复杂的对象. 一种解决方案是Factory模式,另一种是Builder设计模式. 在某些情况下,您甚至可以结合使用这两种模式. 但是在本文中,我想研究 ...

  9. 设计模式 | 建造者模式及典型应用

    本文目录 建造者模式 角色 示例 建造者模式总结 建造者模式的典型应用和源码分析 java.lang.StringBuilder 中的建造者模式 java.lang.StringBuffer 中的建造 ...

最新文章

  1. 20万个法人、百万条银行账户信息,正在暗网兜售
  2. php中的empty和isset
  3. Android 计算Bitmap大小
  4. 学习使用bilstm_crf_model出现的bug
  5. Asp.NetCoreWebApi入门 - 从零开始新建api项目
  6. 达摩院2020十大科技趋势发布:云成IT技术创新中心
  7. VEGA:诺亚AutoML高性能开源算法集简介
  8. Tomcat的bin文档下startup.bat启动后中文出现乱码
  9. 第二季-专题14-串口来做控制台
  10. c语言A 100 开头地址,C语言库函数_-_A开头
  11. JavaScript基础--DOM部分02--李南江
  12. 龙芯芯片CPU的产品路线说明
  13. spring-boot-starter-data-elasticsearch 中测试查询语句报错failed to map source
  14. sql 数据存在包含关系的查询
  15. Windows-dos命令
  16. KernelGAN论文详解分享
  17. u9搜索引擎推送破解版
  18. 四个福利性在线网站分享,每一个都让你欲罢不能……
  19. GIT克隆项目出现:The authenticity of host ‘gitee.com (xxx.xxx.xxx.xxx)‘ can‘t be established.
  20. 汽车车灯产业链全景图

热门文章

  1. 深入了解SAP S4 HANA Business Partner
  2. SAP PM 初级系列25 - 维修工单与采购单据之间LINK?
  3. 2020年SAP项目艰辛曲折的开工历程 III
  4. SAP MM 同一个序列号可以被多次用在交货单发货过账?
  5. SAP S4HANA MRP LIVE
  6. SAP实施项目中采购员在非生产性采购申请审批流中的角色安排
  7. 自然语言处理的发展历程
  8. 8大趋势已现,未来传感器将彻底改变你的生活!
  9. Facebook最新研究:配合AR眼镜使用的腕带,可将神经信号转化为动作
  10. 悬而未决的AI竞赛:全球企业人工智能发展现状