创建型设计模式之建造者模式(Builder)

结构
意图 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。
适用性
  • 当创建复杂对象的算法应该独立于该对象的组成部分以及它们的装配方式时。
  • 当构造过程必须允许被构造的对象有不同的表示时。

 

 1  using System;
 2 
 3     // These two classes could be part of a framework,
 4     // which we will call DP
 5     // ===============================================
 6     
 7     class Director 
 8     {
 9         public void Construct(AbstractBuilder abstractBuilder)
10         {
11             abstractBuilder.BuildPartA();
12             if (1==1 ) //represents some local decision inside director
13             {
14                 abstractBuilder.BuildPartB();            
15             }
16             abstractBuilder.BuildPartC();            
17         }
18 
19     }
20 
21     abstract class AbstractBuilder 
22     {
23         abstract public void BuildPartA();
24         abstract public void BuildPartB();
25         abstract public void BuildPartC();
26     }
27 
28     // These two classes could be part of an application 
29     // =================================================
30 
31     class ConcreteBuilder : AbstractBuilder 
32     {
33         override public void BuildPartA()
34         {
35             // Create some object here known to ConcreteBuilder
36             Console.WriteLine("ConcreteBuilder.BuildPartA called");
37         }
38                 
39         override public void BuildPartB()
40         {
41             // Create some object here known to ConcreteBuilder
42             Console.WriteLine("ConcreteBuilder.BuildPartB called");
43         }
44         
45         override public void BuildPartC()
46         {
47             // Create some object here known to ConcreteBuilder
48             Console.WriteLine("ConcreteBuilder.BuildPartC called");
49         }
50     }    
51 
52     /// <summary>
53     ///    Summary description for Client.
54     /// </summary>
55     public class Client
56     {
57         public static int Main(string[] args)
58         {
59             ConcreteBuilder concreteBuilder = new ConcreteBuilder();
60             Director director = new Director();
61 
62             director.Construct(concreteBuilder);
63 
64             return 0;
65         }
66     }
建造者模式

 

posted @ 2015-07-23 08:26  自然去留  阅读(186)  评论(0编辑  收藏  举报