設計模式培訓之八:建造者模式
摘要: 查看本人文章索引請通過http://www.rzrgm.cn/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();


浙公網安備 33010602011771號