建造者模式
2015-08-27 08:49
471 查看
建造者模式:将一个复杂的对象的构建与他的表示分离,使得同样的构建过程可以创建不同的表示。建造者模式的好处就是使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以如果要改变一个产品内部的表示,只需要再定义一个具体的建造者就可以了。
namespace bp { class Product { List<string> parts = new List<string>(); public void Add(string part) { parts.Add(part); } public void Show() { Console.WriteLine("Product Created"); foreach (string item in parts) { Console.WriteLine(item); } } } abstract class Builder { public abstract void BuildPartA(); public abstract void BuildPartB(); public abstract Product GetResult(); } class ConcreteBuilder1 : Builder { private Product product = new Product(); public override void BuildPartA() { product.Add("Part A"); } public override void BuildPartB() { product.Add("Part B"); } public override Product GetResult() { return product; } } class ConcreteBuilder2 : Builder { private Product product = new Product(); public override void BuildPartA() { product.Add("Part X"); } public override void BuildPartB() { product.Add("Part Y"); } public override Product GetResult() { return product; } } class Director { public void Construct(Builder bulid) { bulid.BuildPartA(); bulid.BuildPartB(); } } class Program { static void Main(string[] args) { Director director = new Director(); Builder b1 = new ConcreteBuilder1(); Builder b2 = new ConcreteBuilder2(); director.Construct(b1); Product p1 = b1.GetResult(); p1.Show(); director.Construct(b2); Product p2 = b2.GetResult(); p2.Show(); } } }
相关文章推荐
- Spring MVC 返回NULL时客户端用$.getJSON的问题
- excel 随记选取某些行
- 编译heartbeat出现的问题
- CentOS6.5_x64上简单编译配置Heartbeat3.0.4
- hdu 5072 Coprime 容斥原理
- IOS学习中的TableView的用法
- WXHL 学习总结(七)
- oc 点语法 / KVC /readwrite/readonly/
- 解决趋势OfficeScan11自动显示隐藏文件等问题
- 黑马程序员--类的声明和实现
- 1068. Find More Coins (30)搜索题
- Access restriction: The type BASE64Encoder is not accessible due to restrict on required library
- HDOJ 1162 Eddy's Picture (最小生成树)
- Java中方法重载时注意点
- HDU 5093 Battle ships(二分图匹配)
- 数组元素是 字符串 类型,并且包含 -等 特殊字符
- Win10正式上市整整一个月时间:最新全球安装量已超7500万
- ATS插件channel_stats源码分析解读
- 【Cactus仙人掌图】仙人掌基础知识学习笔记
- java中i++和++i与c里的区别