設計模式之構建者(Builder)模式

意圖:將一個複雜的構建與其表示相分離,使得一樣的構建過程能夠建立不一樣的表示。 下面會發現模式實現方式與策略模式,橋接模式等都是類似的,惟有意圖不一樣而已.此爲建立者模式html

p_w_picpath_2

建立者模式在平時生活中很常見,如肯德基的套餐,可樂能夠跟不少東西組合成一個套餐.而你向服務員要的就是一個套餐,服務員就把不一樣東西組合在一塊兒成了一個套餐,而後給你.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接口

相關文章
相關標籤/搜索