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;
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 ();
}
}
CEO of public class
{
Public static void Main ()
{
Try
{
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 );
}
}
}