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

原创 2007年09月12日 12:44: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 ();
  }
 }

   

}

 

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

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

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

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

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

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

大话设计模式—工厂模式

一、简介工厂模式主要是为创建对象提供了接口。工厂模式按照《Java与模式》中的提法分为三类: 简单工厂模式(Simple Factory) 工厂方法模式(Factory Method) 抽象工厂模...
  • lmb55
  • lmb55
  • 2015年05月31日 14:42
  • 1073

C#设计模式——工厂方法模式(Factory Method)

一、引言   在简单工厂模式中讲到简单工厂模式的缺点,有一点是——简单工厂模式系统难以扩展,一旦添加新产品就不得不修改简单工厂方法,这样就会造成简单工厂的实现逻辑过于复杂,然而本专题介绍的工厂方法模...
  • ycl295644
  • ycl295644
  • 2015年07月06日 08:59
  • 692

C#设计模式02-抽象工厂模式(附源码)

抽象工厂模式是所有工厂模式中最为抽象的模式,是抽象程度最高的模式,也是最难理解的一种工厂模式。         现在举一个生活中的案例来说明抽象工厂模式,电视是我们生活中必不可说的电器,但是电视有很多...
  • bhdxmaomi
  • bhdxmaomi
  • 2016年01月12日 15:07
  • 1086

设计模式——抽象工厂 Java源代码

抽象工厂 + Java源代码。本程序改编自《Head First Design Patterns》(简称HF )中的关于Pizza的例子...
  • u013390476
  • u013390476
  • 2015年12月24日 20:06
  • 1670

Android设计模式(十二)--抽象工厂模式

问题: 抽象工厂模式,是一个,狠恶心的模式,那么这个模式在Android有没有用到过呢? 1、定义: 抽象工厂模式:为创建一组相关或者是相互依赖的对象提供一个接口,而不需要指定他们的具体类。 ...
  • naibbian
  • naibbian
  • 2015年06月12日 15:52
  • 1089

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

1.工厂模式的定义         工厂模式使用的频率非常高,我们在开发中总能见到它们的身影。其定义为:Define an interface for creating an object, but ...
  • eson_15
  • eson_15
  • 2016年04月23日 10:48
  • 13479

C++设计模式——抽象工厂模式(含实例)

伟创力(世界500强企业),公司有笔记本生产车间、电视机车间、空调车间、电话生产等车间,各生产车间各行其责,生产出不同类型的产品。伟创力不再是生产单一产品的企业,而是生产出多种不同类型的产品,各产品属...
  • swqqcs
  • swqqcs
  • 2014年09月08日 20:35
  • 1802
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#设计模式之抽象工厂(abstract factory)模式示例源代码
举报原因:
原因补充:

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