设计模式之构建者(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接口

相关文章
相关标签/搜索