zoukankan      html  css  js  c++  java
  • 抽象工廠模式示例(外摘)

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

       

    }

  • 相关阅读:
    java连接mysql以及增删改查操作
    Django中ORM表的创建以及基本增删改查
    python链接mysql以及mysql中对表修改的常用语法
    Windows系统安装MySQL
    php 之 excel导出导入合并
    玄学基础
    ubuntu 17.10 安装QQ
    CI框架导入 excel
    atom插件安装
    excel怎么截取字符串
  • 原文地址:https://www.cnblogs.com/HondaHsu/p/710759.html
Copyright © 2011-2022 走看看