23种设计模式之建造者模式(Builder)
建造者模式强调将一个复杂对象的创建与它的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式是一步一步地创建一个复杂的对象,它允许用户只通过制定复杂对象的类型和内容就可以构建它们,用户不需要知道内部的具体构建细节。建造者模式属于对象创建型模式。
public abstract class Builder
{
public abstract void MakeTitle(string title);
public abstract void MakeString(string str);
public abstract void MakeItems(string[] items);
public abstract Object GetResult();
}
public class Director
{
private Builder builder; public Director(Builder builder)
{
this.builder = builder;
} public Object Construct()
{
builder.MakeTitle("Greeting");
builder.MakeString("从早上到白天结束");
builder.MakeItems(new string[] { "早安", "午安" }); builder.MakeString("到了晚上");
builder.MakeItems(new string[] { "晚安", "好梦" });
return builder.GetResult();
}
}
public class TextBuilder : Builder
{
private StringBuilder sb = new StringBuilder();
public override void MakeTitle(string title)
{
sb.Append("【" + title + "】/n/n");
} public override void MakeString(string str)
{
sb.Append(str + "/n/n");
} public override void MakeItems(string[] items)
{
for (int i = ; i < items.Length; i++)
{
sb.Append(items[i] + "/n");
}
sb.Append("/n");
} public override object GetResult()
{
return sb.ToString();
}
}
class Program
{
static void Main(string[] args)
{
//生成器模式
Builder.Director director = new Builder.Director(new Builder.TextBuilder());
string result = director.Construct() as string;
Console.WriteLine(result);
}
}

23种设计模式之建造者模式(Builder)的更多相关文章
- java的23种设计模式之建造者模式
场景和本质 场景 本质 案例 原理 应用场景 场景和本质 场景 我们要建造一个复杂的产品.比如:神州飞船,Iphone.这个复杂的产品的创建.有这样一个问题需要处理:装配这些子组件是不是有个步骤问题? ...
- 实践GoF的23种设计模式:建造者模式
摘要:针对这种对象成员较多,创建对象逻辑较为繁琐的场景,非常适合使用建造者模式来进行优化. 本文分享自华为云社区<[Go实现]实践GoF的23种设计模式:建造者模式>,作者: 元闰子. 简 ...
- 二十四种设计模式:建造者模式(Builder Pattern)
建造者模式(Builder Pattern) 介绍将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示. 示例用同样的构建过程创建Sql和Xml的Insert()方法和Get()方 ...
- 【Unity3D与23种设计模式】建造者模式(Builder)
GoF中定义: "将一个复杂的构建流程与它的对象表现分离出来,让相同的构建流程可以产生不同的对象行为表现." 建造者模式可以分为两个步骤来实施: 1.将复杂的构建流程独立出来,并将 ...
- 乐在其中设计模式(C#) - 建造者模式(Builder Pattern)
原文:乐在其中设计模式(C#) - 建造者模式(Builder Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 建造者模式(Builder Pattern) 作者:webabc ...
- 【设计模式】建造者模式 Builder Pattern
前面学习了简单工厂模式,工厂方法模式以及抽象工厂模式,这些都是创建类的对象所使用的一些常用的方法和套路, 那么如果我们创建一个很复杂的对象可上面的三种方法都不太适合,那么“专业的事交给专业人去做”,2 ...
- php 23种设计模型 - 建造者模式
建造者模式(Builder) 建造者模式(Builder Pattern)使用多个简单的对象一步一步构建成一个复杂的对象.这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式. 一个 Bu ...
- JAVA开发的23种设计模式之 --- 桥接模式
桥接模式 概述:将抽象部分与他的实现部分分离,这样抽象化与实现化解耦,使他们可以独立的变化.如何实现解耦的呢,就是通过提供抽象化和实现化之间的桥接结构. 应用场景 实现系统可能有多 ...
- c# 24种设计模式4建造者模式(Builder)
先来一个例子 建造者接口 public interface IBuilder { void CreateLogo(); void CreateBody(); void CreateWheel(); v ...
随机推荐
- BarTender出现条码打印位置不准的情况怎么办
在使用BarTender 2016设计打印条码标签,往往在打印时会遇到各种各样的问题,比如说:打印内容错位,内容发生偏移,与设置好的BarTender 2016条码标签的相对位置发生较为严重的偏差,这 ...
- 代码记录——phase16,block32
HRESULT RotateZoom(PBYTE pbSrc,int iWidth,int iHeight,double dbRotate,double dbZoom,PBYTE pbTag) { / ...
- IE每次关闭都提示IE已停止工作
方法一:打开IE浏览器,点击工具,选择下拉菜单中的internet选项,切换至高级选项卡标签,找到“启用第三方浏览器扩展”选项.把前面的打勾去掉: 方法二:打开IE浏览器,不管是6.0还是更高的版本这 ...
- 修改centos的时间,解决时间比本地实际时间快了8小时
1.vi /etc/sysconfig/clock #编辑文件ZONE="Asia/Shanghai"UTC=false #设置为false,硬件时钟不于utc时间一致ARC=fa ...
- linux 使用supervisor来管理进程
现在假设一个脚本是,hello.py,内容是 fo = open('xx.txt','w') while 1: fo.write('hello world') print('hi') time.sle ...
- 使用Ajax long polling实现简单的聊天程序
关于web实时通信,通常使用长轮询或这长连接方式进行实现. 为了能够实际体会长轮询,通过Ajax长轮询实现了一个简单的聊天程序,在此作为笔记. 长轮询 传统的轮询方式是,客户端定时(一般使用setIn ...
- ASP.NET MVC 4 (四) 控制器扩展
MVC的标准流程是请求传递给控制器,由控制器action方法操作数据模型,最后交由视图渲染输出,这里忽略了两个细节,就是MVC是如何创建相应控制器实例,又是如何调用控制器action方法的,这就必须讲 ...
- Winform判断EventHandler是否已经添加
斜体部分替换成自己需要的 private bool HasValueChangedEventHandler(DateTimePicker b) { FieldInfo f1 = typeof(Date ...
- Maven update project...后jdk变成1.5,update project后jdk版本改变
Maven update project...后jdk变成1.5,update project后jdk版本改变 ============================== 蕃薯耀 2018年3月14 ...
- 【Android】amr播放
http://download.csdn.net/download/r8hzgemq/4877495 http://www.cnblogs.com/fengzhblog/archive/2013/08 ...