Patterns in SOME –Builder

来源:互联网 发布:c语言中abs是什么意思 编辑:程序博客网 时间:2024/04/30 02:28

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")*/ %>
              };
       };
}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 零钱包密码忘了怎么办 关爱通密码知道卡号忘了怎么办 卡号的密码忘了怎么办 银行卡号密码忘了怎么办 微信超出单月支付限额怎么办 行李箱三位数密码忘记了怎么办 手机忘记4位数密码怎么办 win7登入密码忘记了怎么办 电脑登入密码忘记了怎么办 电脑忘记登入密码怎么办 qq钱包支付密码忘了怎么办 财付通转走我卡里的钱怎么办 银行卡资金通过财付通被盗怎么办 社保卡忘了密码怎么办 医保卡忘了密码怎么办 手机qq红包忘记支付密码怎么办 微信红包忘记支付密码怎么办 充点话费充错了怎么办 qq转账记录删除了怎么办 qq转账记录删了怎么办 qq怎么办?q币转给微信 q币送不了别人怎么办 新qq号忘记了怎么办 手机qq登不上去怎么办 qq的账号忘了怎么办 微信红包密码输错锁了怎么办 陌陌钱包异常钱怎么办 对公账户转错了怎么办 微信零钱转账限额怎么办 微信红包充错话费怎么办 qq支付20万限额怎么办 qq红包20万限额怎么办 微信充qb冲错了怎么办 液相色谱柱干了怎么办 微信钱包充流量没到账怎么办 qq买流量不到账怎么办 冲q币电话冲错号了怎么办 下载cf什么文件损坏怎么办 cf老是36_2怎么办啊 永辉超市积分卡怎么办 超市积分卡丢了怎么办