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

原创 2005年04月28日 12:43:00

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

   

}

C#设计模式---抽象工厂(Abstract Factory)

意图          提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。   场景          还是上次说的那个网络游戏,定下来是一个休闲的FPS游戏。和CS差不...

抽象工厂设计模式(Abstract Factory Design Pattern)

sourcemaking.com 抽象工厂: 提供一个接口来创建相关的或有依赖的对象们的家庭,而不用指明他们的具体类。一种层级结构封装了:许多可能的“平台”(比如窗口系统、操作系统、数据库等),还有构...

JAVA设计模式二--Abstract Factory(抽象工厂)

抽象工厂模式: 提供一个创建一系列相关活相互依赖对象的接口,而无需指定他们具体的类。 举2个例子: 1.BOSS要求提供JDBC,Hibernate,Ibatis等多套数据库操作解决方案,能够无...
  • hfmbook
  • hfmbook
  • 2012年06月20日 15:15
  • 1113

设计模式之abstract factory(抽象工厂)

1、意图 创建一系列相关或互相依赖得对象得接口。 2、参与者关系 3、效果 a、当提供库得时候,使用这种方式来创建对象,可以使得客户只和类得接口打交道,而隐藏其实现。 b、当需要更换...
  • sydnash
  • sydnash
  • 2014年04月02日 22:35
  • 628

23设计模式之抽象工厂(Abstract Factory)

抽象工厂(Abstract Factory)属于创建型模式中的一种,提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。...

设计模式学习笔记:Abstract Factory(抽象工厂)

Abstract Factory概要         Abstract Factory模式是一种对象创建模式,意图是提供一个创建一系列相关或相互依赖的对象的接口,而无需指定它们(一系列对象)具体的类...

走进设计模式之——抽象工厂(Abstract Factory)

在走进抽象工厂之前,得先走进简单工厂。 一、简单工厂(Factory)模式 1. 概述 提供一个类,由它负责根据一定的条件创建某一具体类的实例。 2. 解决的问题 简单工厂模式的实质是由一个...

设计模式:抽象工厂-abstract factory

提供一个创建一系列相关或者相互依赖对象的接口,而无须指定他们具体的类优点: 良好的封装性:每个产品类与高层之间的关系不需要被client知道,client只需要知道工厂类能够创建出一个需要的对象即可 ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#设计模式之抽象工厂(abstract factory)模式示例源代码
举报原因:
原因补充:

(最多只允许输入30个字)