意圖:將一個複雜的構建與其表示相分離,使得一樣的構建過程能夠建立不一樣的表示。 下面會發現模式實現方式與策略模式,橋接模式等都是類似的,惟有意圖不一樣而已.此爲建立者模式html
建立者模式在平時生活中很常見,如肯德基的套餐,可樂能夠跟不少東西組合成一個套餐.而你向服務員要的就是一個套餐,服務員就把不一樣東西組合在一塊兒成了一個套餐,而後給你.c#
1.定義產品類ide
class Product { List <string> parts = new List <string> (); public void Add(string part) { parts.Add(part); } public void Display() { Console.WriteLine("\nProduct Parts -------"); foreach (string part in parts) Console.Write(part); Console.WriteLine(); } }
2.定義建立接口與對象ui
interface IBuilder { void BuildPartA(); void BuildPartB(); Product GetResult(); } class Builder1 : IBuilder { private Product product = new Product(); public void BuildPartA() { product.Add("PartA "); } public void BuildPartB() { product.Add("PartB "); } public Product GetResult() { return product; } } class Builder2 : IBuilder { private Product product = new Product(); public void BuildPartA() { product.Add("PartX "); } public void BuildPartB() { product.Add("PartY "); } public Product GetResult() { return product; } }
3.開始組合建立htm
class Director { // Builder uses a complex series of steps public void Construct(IBuilder builder) { builder.BuildPartA(); builder.BuildPartB(); builder.BuildPartB(); } }
4.客戶端調用對象
public static void Main() { // Create one director and two builders Director director = new Director(); IBuilder b1 = new Builder1(); IBuilder b2 = new Builder2(); // Construct two products director.Construct(b1); Product p1 = b1.GetResult(); p1.Display(); director.Construct(b2); Product p2 = b2.GetResult(); p2.Display(); Console.ReadKey(); }
此模式也是抽象的結果,與其餘一些模式實現方式差很少,惟一不一樣的是意圖blog
原始連接:http://www.cnblogs.com/Clingingboy/archive/2010/08/26/1809558.html接口