Patterns in SOME –Builder

    技术2022-05-11  72

    Code in C#:

      namespace Builder_DesignPattern {      using System;        // These two classes could be part of a framework,      // which we will call DP      // ===============================================           class Director      {          public void Construct(AbstractBuilder abstractBuilder)          {               abstractBuilder.BuildPartA();               if (1==1 ) //represents some local decision inside director               {                    abstractBuilder.BuildPartB();                           }               abstractBuilder.BuildPartC();                      }        }        abstract class AbstractBuilder      {          abstract public void BuildPartA();          abstract public void BuildPartB();          abstract public void BuildPartC();      }        // These two classes could be part of an application      // =================================================        class ConcreteBuilder : AbstractBuilder      {          override public void BuildPartA()          {               // Create some object here known to ConcreteBuilder               Console.WriteLine("ConcreteBuilder.BuildPartA called");          }                             override public void BuildPartB()          {               // Create some object here known to ConcreteBuilder               Console.WriteLine("ConcreteBuilder.BuildPartB called");          }                   override public void BuildPartC()          {               // Create some object here known to ConcreteBuilder               Console.WriteLine("ConcreteBuilder.BuildPartC called");          }      }           ///<summary>      ///    Summary description for Client.      ///</summary>      public class Client      {          public static int Main(string[] args)          {               ConcreteBuilder concreteBuilder = new ConcreteBuilder();               Director director = new Director();                 director.Construct(concreteBuilder);                 return 0;          }      } }   Code in SOME:    CDirector        Construct(AAbstractBuilder)        AAbstractBuilder        a_BuildPartA()        a_BuildPartB()        a_BuildPartC()   CConcreteBuilder: AAbstractBuilder        o_BuildPartA()        o_BuildPartB()        o_BuildPartC()   CClient        main        CClient.main {        CConcreteBuilder concreteBuilder.();        CDirector director.();        director.Construct(concreteBuilder)        {               concreteBuilder.BuildPartA<CConcreteBuilder>()               {                      <% /*("CConcreteBuilder.BuildPartA called")*/ %>               };               concreteBuilder.BuildPartB<CConcreteBuilder>()               {                      <% /*("CConcreteBuilder.BuildPartA called")*/ %>               };               concreteBuilder.BuildPartC<CConcreteBuilder>()               {                      <% /*("CConcreteBuilder.BuildPartA called")*/ %>               };        }; }

    最新回复(0)