创建型设计模式之建造者模式(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 }