C#设计模式之抽象工厂模式示例源代码

来源:互联网 发布:mac desmume金手指 编辑:程序博客网 时间:2024/06/05 21:54

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);}Feedom.net国内最早的网管网站

 

 

public class pcRAM:RAM{   public override Computer ComposeAComputer(CPU cpu)   {    Console .WriteLine ("pcComputer...");

 

    return new Computer(this,cpu);   } 09hr.com网管求职

  }

 

 

public class pcCPU:CPU{   public override Computer ComposeAComputer(RAM ram)   {    Console .WriteLine ("pcComputer...");

    return new Computer(ram,this);   } 09hr.com网管求职

} bitsCN_com

public class macRAM:RAM{   public override Computer ComposeAComputer(CPU cpu)   {    Console .WriteLine ("MacComputer...");    return new Computer(this,cpu);   } bitsCN_com

  }

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);   } DL.bitsCN.com网管软件下载

}

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