using System;
namespace Design_Pattern {
public class Computer { private RAM Ram; private CPU Cpu; public Computer(RAM ram,CPU cpu) { this.Ram =ram; this.Cpu =cpu; Console .WriteLine("A Computer is Composed! "+this.Ram +" "+this.Cpu ); } }
public abstract class RAM { public abstract Computer ComposeAComputer(CPU cpu); } public abstract class CPU { public abstract Computer ComposeAComputer(RAM ram); }
public class pcRAM:RAM { public override Computer ComposeAComputer(CPU cpu) { Console .WriteLine ("pcComputer...");
return new Computer(this,cpu); }
}
public class pcCPU:CPU { public override Computer ComposeAComputer(RAM ram) { Console .WriteLine ("pcComputer...");
return new Computer(ram,this); }
}
public class macRAM:RAM { public override Computer ComposeAComputer(CPU cpu) { Console .WriteLine ("MacComputer..."); return new Computer(this,cpu); }
}
public class macCPU:CPU { public override Computer ComposeAComputer(RAM ram) { Console .WriteLine ("MacComputer..."); return new Computer(ram,this); }
} public abstract class abstractFactory { public abstract RAM CreateRam(); public abstract CPU CreateCpu() ; }
public class PcFactory:abstractFactory { public override RAM CreateRam() { return new pcRAM(); } public override CPU CreateCpu() { return new pcCPU(); }
}
public class MacFactory:abstractFactory { public override RAM CreateRam() { return new macRAM();
} public override CPU CreateCpu() { return new macCPU(); }
}
class ITMarket { private RAM ram; private CPU cpu; public ITMarket(abstractFactory factory) { this.ram =factory.CreateRam(); this.cpu =factory.CreateCpu(); } public void Run() { ram.ComposeAComputer(cpu); cpu.ComposeAComputer(ram); }
}
class ClientApp { public static void Main(string[] args) { Console .WriteLine("PC Factory.....\n"); abstractFactory pcfactory=new PcFactory (); ITMarket itMarket=new ITMarket (pcfactory); itMarket .Run ();
Console .WriteLine("MAC Factory.....\n"); abstractFactory macfactory=new MacFactory(); itMarket =new ITMarket (macfactory); itMarket .Run (); } }
}
|