五分钟一个设计模式之创建者模式
来源:互联网 发布:2016年哪家宽带网络快 编辑:程序博客网 时间:2024/06/08 18:34
五分钟一个设计模式,用最简单的方法来描述设计模式。查看更多设计模式,请点击五分钟一个设计模式系列
http://blog.csdn.net/daguanjia11/article/category/3259443
认识创建者模式
创建者模式(又叫生成器模式)是为创建一个产品而生的,这个产品的组装算法是确定的,但零部件可以分配给多个厂商生产。使用创建者模式来创建产品,可以把产品零部件的生产和组装分开了。
创建者模式包含以下几个部分:
- 产品(Product)
- 厂商的接口(Builder)
- 具体的厂商(ConcreteBuilder1、ConcreteBuilder2、…ConcreteBuilderN),实现厂商接口,负责产品零部件的生产工作
- 指导者(Director),这家伙知道怎么组装产品,负责整个产品的构建算法
示例代码
//产品public class Product{ public string ProductPartA { get; set; } public string ProductPartB { get; set; } public string ProductPartC { get; set; } public override string ToString() { return ProductPartA + "\n" + ProductPartB + "\n" + ProductPartC; }}
//厂商的接口public interface Builder{ void BuildePartA(); void BuildePartB(); void BuildePartC(); Product GetProduct();}
//具体厂商1public class ConcreteBuilder1:Builder{ Product product = new Product(); public void BuildePartA() { product.ProductPartA = "part A, concreteBuilder1 制造"; } public void BuildePartB() { product.ProductPartB = "part B, concreteBuilder1 制造"; } public void BuildePartC() { product.ProductPartC = "part C, concreteBuilder1 制造"; } public Product GetProduct() { return product; }}
//具体厂商2public class ConcreteBuilder2 : Builder{ Product product = new Product(); public void BuildePartA() { product.ProductPartA = "part A, concreteBuilder2 制造"; } public void BuildePartB() { product.ProductPartB = "part B, concreteBuilder2 制造"; } public void BuildePartC() { product.ProductPartC = "part C, concreteBuilder2 制造"; } public Product GetProduct() { return product; }}
//指导者public class Director{ private Builder builder; public Director(Builder builder) { this.builder = builder; } //组装产品的算法。将具体厂商生产的零部件组装到一起(可以加入特定的业务逻辑) public void Construct() { builder.BuildePartA(); builder.BuildePartB(); builder.BuildePartC(); Product p = builder.GetProduct(); Console.WriteLine(p.ToString()); }}
下面是场景类
class Program{ static void Main(string[] args) { Builder builder1=new ConcreteBuilder1(); Builder builder2=new ConcreteBuilder2(); Director director = new Director(builder1); director.Construct(); director = new Director(builder2); director.Construct(); }}
运行结果:
part A, concreteBuilder1 制造
part B, concreteBuilder1 制造
part C, concreteBuilder1 制造
part A, concreteBuilder2 制造
part B, concreteBuilder2 制造
part C, concreteBuilder2 制造
1 0
- 五分钟一个设计模式之创建者模式
- 设计模式之创建者模式
- 设计模式之创建者模式
- 设计模式之创建者模式
- 设计模式之创建者模式
- 设计模式之创建者模式
- 设计模式之创建者模式
- 设计模式之创建者模式
- 设计模式之创建者模式
- 设计模式之创建者模式
- 五分钟一个设计模式之工厂方法模式
- 五分钟一个设计模式之模板方法模式
- 五分钟一个设计模式之代理模式
- 五分钟一个设计模式之单例模式
- 五分钟一个设计模式之观察者模式
- 五分钟一个设计模式之命令模式
- 五分钟一个设计模式之策略模式
- 五分钟一个设计模式之组合模式
- Android回调机制的讨论
- 什么是platform SDK???
- 从实际问题看非对称加密的应用
- Qt Quick 图像处理实例之美图秀秀(附源码下载)
- MFC创建菜单
- 五分钟一个设计模式之创建者模式
- Surrounded Regions -- leetcode
- mysql 触发器
- .Net4.0 任务(Task)
- js-statement
- GeoServer发布地图服务
- platform的相关资料1:
- grunt基于NodeJS打包压缩JS和CSS
- js-array