![抽象工厂简单实例(共7页)_第1页](http://file4.renrendoc.com/view/e2931267847af791f17533de7c47e107/e2931267847af791f17533de7c47e1071.gif)
![抽象工厂简单实例(共7页)_第2页](http://file4.renrendoc.com/view/e2931267847af791f17533de7c47e107/e2931267847af791f17533de7c47e1072.gif)
![抽象工厂简单实例(共7页)_第3页](http://file4.renrendoc.com/view/e2931267847af791f17533de7c47e107/e2931267847af791f17533de7c47e1073.gif)
![抽象工厂简单实例(共7页)_第4页](http://file4.renrendoc.com/view/e2931267847af791f17533de7c47e107/e2931267847af791f17533de7c47e1074.gif)
![抽象工厂简单实例(共7页)_第5页](http://file4.renrendoc.com/view/e2931267847af791f17533de7c47e107/e2931267847af791f17533de7c47e1075.gif)
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、我的空间(kngjin) 主页(zh y)|空间(kngjin)装扮博客|写新文章相册|上传照片好友|找新朋友档案|留言板我的应用 loading. 我的i贴吧 i动态传送门我的动态jljHappyDay 1 | 我的消息(0/0) | 我的空间 | 我的应用 | 我的i贴吧 | 百度空间 | 百度首页 | 退出 踏浪帅的空间ASP.NET C# 资料收藏 主页博客相册|个人档案 |好友 查看文章 NET设计模式(4): 抽象工厂模式(实例代码)2009-11-29 00:18实例:大家知道,动物世界中各大陆的动物是不一样的,各种动物可以分成两样,一种食草,一种食肉。食肉的动物吃食草动物。美洲
2、狼属于食肉动物,野牛属于食草动物,美洲狼吃野牛。非洲的狮子属于食肉动物,角马属于食草动物,狮子吃角马。类图如下:代码:using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace AnimalWorld / 抽象大陆工厂 abstract class ContinentFactory abstract public Herbivore CreateHerbivore(); /抽象创建食草动物的类,返回食草类动物 abstract public Carnivore Creat
3、eCarnivore(); /抽象创建食肉动物的类,返回食肉类动物 /非洲大陆,有角马,狮子 class AfricaFactory : ContinentFactory /非洲动物工厂类 override public Herbivore CreateHerbivore() /实现上面的抽象方法,注意返回类型 return new Wildebeest(); /实例化一个角马,角马是食草动物 override public Carnivore CreateCarnivore() /实现上面的抽象方法,注意返回类型 return new Lion(); /实例化一个(y )狮子,狮子是食肉动物
4、 / 美洲(mi zhu)大陆,有狼,野牛(yni) class AmericaFactory : ContinentFactory /同上,美洲动物工厂类 override public Herbivore CreateHerbivore() return new Bison(); /野牛 override public Carnivore CreateCarnivore() return new Wolf(); /狼 /食草动物 abstract class Herbivore /抽象食草类 /肉食动物 abstract class Carnivore /抽象食肉类 /猎食食草动物的方法
5、abstract public void Eat(Herbivore h); /抽象吃方法,传入食草动物为参数 /角马 class Wildebeest : Herbivore /继承食草 /狮子 class Lion : Carnivore /重载猎食食草动物的方法 override public void Eat(Herbivore h) /重写吃方法 Console.WriteLine(this + eats + h); /this代表本身 /野牛 class Bison : Herbivore /狼 class Wolf : Carnivore /重载猎食(li sh)食草动物的方法
6、override public void Eat(Herbivore h) Console.WriteLine(this + eats + h); /动物(dngw)世界类 class AnimalWorld private Herbivore herbivore; /变量(binling),返回食草抽象类 private Carnivore carnivore; / 创建两种动物分类 public AnimalWorld(ContinentFactory factory) carnivore = factory.CreateCarnivore(); herbivore = factory.C
7、reateHerbivore(); /运行食物链 public void RunFoodChain() /肉食动物猎食食草动物 carnivore.Eat(herbivore); / / 抽象工厂模式客户应用测试 / class GameApp static void Main(string args) /创造并运行非洲动物世界 ContinentFactory africa = new AfricaFactory(); AnimalWorld world = new AnimalWorld(africa); world.RunFoodChain(); /创造并运行美洲动物世界 Contine
8、ntFactory america = new AmericaFactory(); world = new AnimalWorld(america); world.RunFoodChain(); Console.Read(); 实例二:(增加亚洲食肉虎,亚洲食草兔)代码红色(hngs)为增加上去了!其它不变using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace AnimalWorld / 抽象(chuxing)大陆工厂 abstract class Continent
9、Factory abstract public Herbivore CreateHerbivore(); /抽象创建(chungjin)食草动物的类,返回食草类动物 abstract public Carnivore CreateCarnivore(); /抽象创建食肉动物的类,返回食肉类动物 /非洲大陆,有角马,狮子 class AfricaFactory : ContinentFactory /非洲动物工厂类 override public Herbivore CreateHerbivore() /实现上面的抽象方法,注意返回类型 return new Wildebeest(); /实例化
10、一个角马,角马是食草动物 override public Carnivore CreateCarnivore() /实现上面的抽象方法,注意返回类型 return new Lion(); /实例化一个狮子,狮子是食肉动物 / 美洲大陆,有狼,野牛 class AmericaFactory : ContinentFactory /同上,美洲动物工厂类 override public Herbivore CreateHerbivore() return new Bison(); /野牛 override public Carnivore CreateCarnivore() return new W
11、olf(); /狼 /亚洲(y zhu)大陆,有虎,兔子 class AsiaFactory : ContinentFactory public override Herbivore CreateHerbivore() return new rabbit(); public override Carnivore CreateCarnivore() return new tiger(); /食草动物 abstract class Herbivore /抽象(chuxing)食草类 /肉食动物(ru sh dn w) abstract class Carnivore /抽象食肉类 /猎食食草动物的
12、方法 abstract public void Eat(Herbivore h); /抽象吃方法,传入食草动物为参数 /角马 class Wildebeest : Herbivore /继承食草 /狮子 class Lion : Carnivore /重载猎食食草动物的方法 override public void Eat(Herbivore h) /重写吃方法 Console.WriteLine(this + eats + h); /this代表本身 /野牛 class Bison : Herbivore /狼 class Wolf : Carnivore /重载(zhn zi)猎食食草动物
13、的方法 override public void Eat(Herbivore h) Console.WriteLine(this + eats + h); /兔子(t zi)类 class rabbit:Herbivore /老虎(loh) class tiger : Carnivore public override void Eat(Herbivore h) Console.WriteLine(this + eats + h); /动物世界类 class AnimalWorld private Herbivore herbivore; /变量,返回食草抽象类 private Carnivo
14、re carnivore; / 创建两种动物分类 public AnimalWorld(ContinentFactory factory) carnivore = factory.CreateCarnivore(); herbivore = factory.CreateHerbivore(); /运行食物链 public void RunFoodChain() /肉食动物猎食食草动物 carnivore.Eat(herbivore); / / 抽象工厂模式客户应用测试 / class GameApp static void Main(string args) /创造并运行(ynxng)非洲动物
15、世界 ContinentFactory africa = new AfricaFactory(); AnimalWorld world = new AnimalWorld(africa); world.RunFoodChain(); /创造(chungzo)并运行美洲动物世界 ContinentFactory america = new AmericaFactory(); world = new AnimalWorld(america); world.RunFoodChain(); /创建并运行亚洲动物(dngw)世界 ContinentFactory asia = new AsiaFactory(); world = new AnimalWorld(asia); world.RunFoodChain(); Console.Read(); *个人理解:抽象工厂的主要优点是隔离了具体类的生成,使得客户不需要知道什么被创建的。由于这种隔离,更换一个具体工厂就变得相对容易。的有的具体工厂都实现的抽象工厂中定义的那些接口,因此只要必变具体工厂的实例,就可以在某种程序上改变整个软件系统的行为。抽象工厂的不足:在增加新的产品对象时,难以扩展抽象工厂以便生产新种类的产品。这是因为ContinentFact
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 27 漏(教学设计)-2023-2024学年统编版语文三年级下册
- 牙齿正畸配台流程
- 大班安全教育交通知识
- 社会福利养老院项目建设选址与环境分析
- 22我们奇妙的世界(教学设计)2023-2024学年统编版语文三年级下册
- 病理生理学伤寒
- 农业三产融合市场需求分析
- 教育科技人才激励机制的创新策略
- 《多彩生活》(教学设计)安徽大学版三年级下册综合实践活动
- 《公顷和平方千米》教学设计-2024-2025学年人教版数学四年级上册
- 急诊科进修汇报课件
- 二年级下册科学教案-2.3科技产品体验会 大象版
- 劳务分包项目经理岗位职责
- DL∕T 617-2019 气体绝缘金属封闭开关设备技术条件
- 信息技术基础ppt课件(完整版)
- 弘扬与传承中华传统文化课件(共16张PPT)
- 钢琴基础教程教案
- 电子课件-《饭店服务心理(第四版)》-A11-2549
- 糖基转移酶和糖苷酶课件(PPT 111页)
- 部编版五年级语文下册全册教材分析
- 自来水业务办理授权委托书
评论
0/150
提交评论