设计模式培训之八:建造者模式
摘要: 查看本人文章索引请通过http://www.cnblogs.com/seesea125/archive/2012/04/17/2453256.html
一、定义
将一个复杂对象的构造与它的表示分离,使同样的构建过程可以创建不同的表示。
二、应用场景
当一个产品需要复杂的构造,但是构造过程是稳定的,只是构造的对象有不同表示时,就可以使用建造模式。
三、代码实现
class Product { IList<string> parts=new List<string>(); public void Add(string part) { parts.Add(part); } public void show() { Console.WriteLine("\n产品 创建----"); foreach (string part in parts) { Console.WriteLine(part); } } } internal abstract class Bulider { public abstract void BulidPartA(); public abstract void BulidPartB(); public abstract Product GetResult(); } class ConcreteBuilder1:Bulider { private Product product =new Product(); public override void BulidPartA() { product.Add("部件A"); } public override void BulidPartB() { product.Add("部件B"); } public override Product GetResult() { return product; } } class ConcreteBuilder2 : Bulider { private Product product = new Product(); public override void BulidPartA() { product.Add("部件X"); } public override void BulidPartB() { product.Add("部件Y"); } public override Product GetResult() { return product; } } class Director { public void Construct(Bulider bulider) { bulider.BulidPartA(); bulider.BulidPartB(); } }
客户端调用:
Director director = new Director(); Bulider b1 = new ConcreteBuilder1(); Bulider b2 = new ConcreteBuilder2(); director.Construct(b1); Product p1 = b1.GetResult(); p1.show(); director.Construct(b2); Product p2 = b2.GetResult(); p2.show(); Console.Read();