zoukankan      html  css  js  c++  java
  • C#设计模式之建造者(Builder)模式示例源代码(外摘)

    using System;
    using System.Collections;


     //product
     public class Computer
     {
      private string Type;
      private Hashtable info=new Hashtable ();
      public Computer(string type)
      {
       Type=type;
       Console .WriteLine ("Conputer "+type+" is Builded!");
      }

      public string this[string key]
      {
       get
       {
        return (string)info[key];
       }
       set
       {
        info[key]=value;
       }
      }
      public void Show()
      {
       Console .WriteLine ("this is a computer of "+Type+" :");
       Console .WriteLine ("   "+info["cpu"]);
       Console .WriteLine ("   "+info["ram"]);
      }
     }

    //Builder
    public abstract class Builder
    {
     protected Computer computer;

     public Computer Computpter
     {
      get
      {
       return computer;
      }
     }
     public Builder(string type)
     {
     computer=new Computer (type);
     }
     abstract public void BuildCpu();
     abstract public  void BuilderRam();
     
    }

    public class MacBuilder:Builder
    {
     public MacBuilder(string type):base(type)
     {}
     public override void BuildCpu()
     {
      computer["cpu"]="MacCpu";
     }
     public override void BuilderRam()
     {
      computer["ram"]="MacCpu";
     }


    }


    public class pcBuilder:Builder
    {
     public pcBuilder(string type):base(type)
     {}
     public override void BuildCpu()
     {
      computer["cpu"]="pcCpu";
     }
     public override void BuilderRam()
     {
      computer["ram"]="pcCpu";
     }

    }

    public class Worker
    {
     public void Construct(Builder builder)
     {
     
     builder.BuildCpu();
     builder.BuilderRam();
     }
    }


    public  class CEO
    {

     public static void Main()
     {
      try
      {
       Worker Worker=new Worker ();
       Builder PcBuilder=new pcBuilder ("Pc");
       Builder MacBuilder=new MacBuilder ("Mac");
      
       Worker .Construct(PcBuilder);
       Worker.Construct(MacBuilder);

       PcBuilder.Computpter.Show ();
       MacBuilder.Computpter.Show ();
      }
      catch(Exception ex)
      {
      Console.WriteLine ("Error:"+ex.Source+" "+ex.InnerException+ex.StackTrace+ex.TargetSite);
      }


     }
    }

  • 相关阅读:
    判断文件类型
    Kruskal算法
    《大话数据结构》冒泡排序错误修正
    COM组件(ActiveX)控件注册失败
    IP路由协议简析
    Prim算法
    邻接图的深度广度优先遍历
    矩阵图的深度广度遍历
    oracle spatial下对wkt字符串操作遇到srid的解决方案
    Arcgis Javascript中geometryEngine报错’hq‘of undefined的解决方法
  • 原文地址:https://www.cnblogs.com/HondaHsu/p/710764.html
Copyright © 2011-2022 走看看