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

   

}

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

要想正确的理解设计模式,首先必须明确它是为了解决什么问题而提出来的。 抽象设计模式概念:         针对抽象工厂这个设计模式,我查找了不少资料,感觉只有涉及产品级别和产品族的才是理解了抽象工厂设...
  • u012909091
  • u012909091
  • 2014年08月02日 16:52
  • 3610

【java设计模式】之 抽象工厂(Abstract Factory)模式

1. 女娲的失误         上一节学习了工厂模式,女娲运用了该模式成功创建了三个人种,可是问题来了,她发现没有性别……这失误也忒大了点吧……竟然没有性别,那岂不是……无奈,只好抹掉重来了,于是所...
  • eson_15
  • eson_15
  • 2016年04月26日 23:49
  • 11667

深入浅出设计模式 ------ Abstract Factory(抽象工厂)

本文可以和笔者的深入浅出设计模式 ------ Factory Method(工厂方法)参照着看, 可以区分这三个工厂模式的不同。...
  • wenniuwuren
  • wenniuwuren
  • 2015年01月29日 02:25
  • 1730

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

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

抽象工厂模式(abstract)创建型模式 c#简单例子

抽象工厂模式(abstract)创建型模式 c#简单例子 适用于玩家用户数play1、play2....有变化,而行为move、jum无变化时...
  • zhgl7688
  • zhgl7688
  • 2014年12月11日 19:18
  • 902

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

C#设计模式之抽象工厂(abstract factory)模式示例源代码 using System;namespace Design_Pattern{ public class Computer {...
  • cyp403
  • cyp403
  • 2005年05月16日 13:41
  • 1018

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

using System;namespace Design_Pattern{ public class  Computer {  private RAM Ram;  private CPU Cpu; ...
  • guxianga
  • guxianga
  • 2007年09月12日 12:44
  • 356

设计模式:Abstract Factory和Builder(比较区别,个人认为讲得很明白)

如果说 Factory和Prototype是同一个层次的话,那么Abstract Factory和Builder就是更高一级的层次。 1 Abstact Factory   在上面的Factory类型...
  • lovingprince
  • lovingprince
  • 2007年04月17日 10:59
  • 4231

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

参考 http://www.cnblogs.com/zhenyulu/articles/36885.html   http://wenku.baidu.com/view/a15af4186c85...
  • fffanpei
  • fffanpei
  • 2013年12月18日 17:43
  • 532

Java技术_每天掌握一种设计模式(004)_使用场景及简单实例(创建型:抽象工厂)

模式描述 提供一个用于创建一系列相关或相互依赖对象(产品族)的接口(抽象工厂),而无须指定它们的具体类。 2.模式作用 可以一定程度上解耦,消费者和产品实现类隔离开,只依赖产品接口(抽象产品),产...
  • ooppookid
  • ooppookid
  • 2015年01月19日 16:53
  • 1627
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#设计模式之抽象工厂(abstract factory)模式示例源代码
举报原因:
原因补充:

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