• 抽象工廠模式示例(外摘)


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

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

       

    }

  • 相关阅读:
    linux网络编程之共享内存介绍
    linux网络编程之system v消息队列(二)
    一次性从git远程仓库中克隆到本地。
    返回随机数:整数、浮点数
    下载进度条
    os模块学习+open行数
    json数据处理:读取文件中的json字符串,转为python字典
    python执行命令行:python中执行shell命令行read结果
    format格式化输出
    python操作mongodb
  • 原文地址:https://www.cnblogs.com/HondaHsu/p/710759.html
Copyright © 2020-2023  润新知