Net设计模式实例之建造者模式(Builder Pattern)(1)
2010-01-11 00:25
549 查看
一、建造者模式简介(Brief Introduction)
建造者模式(Builder Pattern),将一个复杂对象的构建与它的表示分离,使的同样的构建过程可以创建不同的表示。建造者模式的优点是:使得建造代码与表示代码分离,由于建造者隐藏了该产品是如何组装的,所以如要改变一个产品的内部表示,只需要再定义一个具体的建造者就可以了。
二、解决的问题(What To Solve)
主要用于创建一些复杂的对象,这些对象内部构建间的建造顺序通常是稳定的,但是对象内部的构建通常面临着复杂的变化。三、建造者模式分析(Analysis)
1、建造者模式结构
![](http://images.cnblogs.com/cnblogs_com/ywqu/Design%20pattern/Builder%20Pattern/Builder_Pattern.jpg)
Product类:具体的产品。
Director类:指挥者,构建一个使用Builder接口的对象。
Builder接口:是为创建一个Product对象的各个组件指定的抽象接口
ConcreteBuilder类:具体的建造者,实现Builder接口,构造和装配各个部
2、源代码
1、具体产品Product |
[align=left]public class Product[/align] [align=left]{[/align] [align=left] private IList<string> parts = new List<string>();[/align] [align=left] [/align] [align=left] public void Add(string part)[/align] [align=left] {[/align] [align=left] parts.Add(part);[/align] [align=left] }[/align] [align=left] [/align] [align=left] public void Show()[/align] [align=left] {[/align] [align=left] Console.WriteLine("产品开始创建......");[/align] [align=left] foreach (string part in parts)[/align] [align=left] {[/align] [align=left] Console.WriteLine("部件" + part);[/align] [align=left] }[/align] [align=left] Console.WriteLine("产品完成创建");[/align] [align=left] }[/align] [align=left]}[/align] |
2、抽象建造者Builder及其具体建造者ConcreteBuilder1,ConcreteBuilder2 |
[align=left]public abstract class Builder[/align] [align=left]{[/align] [align=left] public abstract void BuildPartA();[/align] [align=left] public abstract void BuildPartB();[/align] [align=left] public abstract Product GetResult();[/align] [align=left]}[/align] [align=left] [/align] [align=left]public class ConcreteBuilder1 : Builder[/align] [align=left]{[/align] [align=left] Product product = new Product();[/align] [align=left] public override void BuildPartA()[/align] [align=left] {[/align] [align=left] product.Add("A1");[/align] [align=left] }[/align] [align=left] [/align] [align=left] public override void BuildPartB()[/align] [align=left] {[/align] [align=left] product.Add("B1");[/align] [align=left] }[/align] [align=left] [/align] [align=left] public override Product GetResult()[/align] [align=left] {[/align] [align=left] return product;[/align] [align=left] }[/align] [align=left]}[/align] [align=left] [/align] [align=left]public class ConcreteBuilder2 : Builder[/align] [align=left]{[/align] [align=left] Product product = new Product();[/align] [align=left] public override void BuildPartA()[/align] [align=left] {[/align] [align=left] product.Add("A2");[/align] [align=left] }[/align] [align=left] [/align] [align=left] public override void BuildPartB()[/align] [align=left] {[/align] [align=left] product.Add("B2");[/align] [align=left] }[/align] [align=left] [/align] [align=left] public override Product GetResult()[/align] [align=left] {[/align] [align=left] return product;[/align] [align=left] }[/align] [align=left]}[/align] |
3、指挥者类Director |
[align=left]/// <summary>[/align] [align=left]/// 指挥建造过程[/align] [align=left]/// </summary>[/align] [align=left]public class Director[/align] [align=left]{[/align] [align=left] public void Construct(Builder builder)[/align] [align=left] {[/align] [align=left] builder.BuildPartA();[/align] [align=left] builder.BuildPartB();[/align] [align=left] }[/align] [align=left] StringBuilder[/align] [align=left]}[/align] |
4、客户端代码 |
[align=left]static void Main(string[] args)[/align] [align=left]{[/align] [align=left] Director director = new Director();[/align] [align=left] Builder builder1 = new ConcreteBuilder1();[/align] [align=left] Builder builder2 = new ConcreteBuilder2();[/align] [align=left] [/align] [align=left] director.Construct(builder1);[/align] [align=left] Product product1 = builder1.GetResult();[/align] [align=left] product1.Show();[/align] [align=left] [/align] [align=left] director.Construct(builder2);[/align] [align=left] Product product2 = builder2.GetResult();[/align] [align=left] product2.Show();[/align] [align=left] [/align] [align=left] Console.Read();[/align] [align=left]}[/align] |
3、程序运行结果
![](http://images.cnblogs.com/cnblogs_com/ywqu/Design%20pattern/Builder%20Pattern/Builder_Pattern_Result.gif)
相关文章推荐
- .NET设计模式(4):建造者模式(Builder Pattern)(转载)
- .NET设计模式(4):建造者模式(Builder Pattern)
- Net设计模式实例之建造者模式(Builder Pattern)
- Net设计模式实例之建造者模式(Builder Pattern)
- Net设计模式实例之建造者模式(Builder Pattern)
- 设计模式—建造者模式及实例(BuilderPattern)
- Net设计模式实例之建造者模式(Builder Pattern)
- Net设计模式实例之建造者模式(Builder Pattern)(2)
- 设计模式:建造者模式(Builder Pattern)
- design pattern Builder 建造者设计模式
- 极速理解设计模式系列:1.建造者模式(Builder Pattern)
- .Net设计模式之建造者模式(Builder Pattern)
- JAVA设计模式之 建造者模式【Builder Pattern】
- Net设计模式实例之桥接模式( Bridge Pattern)(4)
- .NET设计模式(4):建造者模式(Builder Pattern)
- 创建型模式:建造者模式(Builder Pattern)
- Java之建造者模式(Builder Pattern)
- 二十四种设计模式:建造者模式(Builder Pattern)
- 建造者模式-Builder Pattern 复杂对象的组装与创建——建造者模式(三):关于Director的进一步讨论,建造者模式总结
- 设计模式笔记17:建造者模式(Builder Pattern)