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

原创 2005年05月16日 13:41:00
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 (); } } }

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

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

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

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

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

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

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

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

设计模式学习总结:抽象工厂(Abstract Factory)

意图提供一个创建一系列相关或者相互依赖对象的接口,而无需指定它们具体的类。适用性 一个系统要独立于它的产品的创建、组合和表示时。 一个系统要由多个产品系列中的一个来配置时。 当你要强调一系列相关的产品...

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

在分享抽象工厂模式前,我想还是将设计模式的分类图贴上,以便查看整体分布情况,防止思路混乱。 从设计模式分类图中可以看到抽象工厂模式是经典的创建型设计模式之一。也可以看到抽象工厂模式是对象型创...

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

本文可以和笔者的深入浅出设计模式 ------ Factory Method(工厂方法)参照着看, 可以区分这三个工厂模式的不同。...

设计模式读书笔记:Abstract Factory(抽象工厂)

意图: 提供一个创建一系列相关或相互依赖对象的接口,而无需指定它们具体的类。...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:C#设计模式之抽象工厂(abstract factory)模式示例源代码
举报原因:
原因补充:

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