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); } } }

|