using System; using System.Collections.Generic; using System.Text; ///Builder(生成器)模式将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 ///add by jzh 2007-04-15 namespace DesignPattern { /// <summary> /// Director(指导者)角色:调用具体建造者角色以创建产品对象。 /// 指导者并没有产品类的具体知识,真正拥有产品类的具体知识的是具体建造者对象。 /// </summary> class Director { public void Construct(AbstractBuilder abstractBuilder) { abstractBuilder.BuildPartA(); abstractBuilder.BuildPartB(); abstractBuilder.BuildPartC(); } } abstract class AbstractBuilder { abstract public void BuildPartA(); abstract public void BuildPartB(); abstract public void BuildPartC(); } /// <summary> /// Concrete Builder(具体生成器)角色:担任这个角色的是于应用程序紧密相关的类, /// 它们在指导者的调用下创建产品实例。 /// 这个角色在实现抽象建造者角色提供的方法的前提下,达到完成产品组装,提供成品的功能。 /// </summary> class ConcreteBuilder : AbstractBuilder { override public void BuildPartA() { // 待创建的复杂对象。它要包含那些定义组件的类,包括将这些组件装配成产品的接口。 Console.WriteLine("ConcreteBuilder.BuildPartA 调用"); } override public void BuildPartB() { Console.WriteLine("ConcreteBuilder.BuildPartB 调用"); } override public void BuildPartC() { Console.WriteLine("ConcreteBuilder.BuildPartC 调用"); } } public class Client { public static void Main(string[] args) { ConcreteBuilder concreteBuilder = new ConcreteBuilder(); Director director = new Director(); director.Construct(concreteBuilder); Console.ReadLine(); } } }