抽象工厂模式与适配器模式在食堂案例中的体现——谁说.doc_第1页
抽象工厂模式与适配器模式在食堂案例中的体现——谁说.doc_第2页
抽象工厂模式与适配器模式在食堂案例中的体现——谁说.doc_第3页
抽象工厂模式与适配器模式在食堂案例中的体现——谁说.doc_第4页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

抽象工厂模式与适配器模式在食堂案例中的体现谁说众口难调软件0202 3125020218 王继花终于熬到放学了,又饿又累的同学们拧着书包冲向了他们最满意的食堂众口可调食堂。可是同学们来自五湖四海,口味自然相差甚远。为了让每位同学都能吃上自己喜欢的食物,食堂掌门人广发英雄帖,遍邀天下名厨前来比艺。后来,一位南方厨师一举夺得金刀御厨的桂冠,一位北域庖丁也被光荣聘为银刀御厨。南方金刀擅长做各种南方食物,如各种南方米饭,面条,饺子等;北域疱丁则精通各类北方食物,如各色北方米饭,面条等,遗憾的是他不会做馄钝。不过,掌门人认为水饺和馄钝一样都是以面包馅,放入汤中煮熟即可,所以他决定挂羊头卖狗肉,用南方的水饺代替北方的馄钝。上面的例子可以抽象为抽象工厂模式与适配器模式。南北厨师做南北米饭面条可以抽象为抽象工厂模式。其中食堂担任抽象工厂角色;南方厨师和北方厨师担任具体工厂角色;米饭和面条担任抽象产品角色;而具体产品角色则为南方米饭,北方米饭,南方面条,北方面条。其类图为: Interface RicemakeRice()Interface CanteenRicemake()Noodlemake()SouthMakerRicemake()Noodlemake()NorthMakerRicemake()Noodlemake()SouthRicemakeRice()NorthRicemakeRice()Interface NoodlemakeNoodle()NorthNoodlemakeNoodle() SouthNoodlemakeNoodle()其具体代码为:interface Rice /抽象产品米饭接口 abstract String makeRice(); /抽象的制作米饭方法 class SouthRice implements Rice /南方米饭类实现米饭接口 public String makeRice() String s; /具体的制作米饭方法 s=一份美味的南方米饭,请慢用; return s; class NorthRice implements Rice /北方米饭类实现米饭接口 public String makeRice() String s; /具体的制作米饭方法 s=一份美味的北方米饭,请慢用; return s; interface Noodle /抽象产品面条接口 abstract String makeNoodle(); /抽象的制作面条方法 class SouthNoodle implements Noodle /南方面条类实现面条接口 public String makeNoodle() String s; /具体的制作面条方法 s=一份美味的南方面条,请慢用; return s; class NorthNoodle implements Noodle /北方面条类实现面条接口 public String makeNoodle() String s; /具体的制作面条方法 s=一份美味的北方面条,请慢用; return s; interface Canteen /抽象工厂食堂接口 public Rice Ricemake(); /抽象的米饭制作方法 public Noodle Noodlemake(); /抽象的面条制作方法 class SouthMaker implements Canteen /具体工厂南方厨师实现食堂接口 public Rice Ricemake() return new SouthRice(); /具体的米饭制作方法 public Noodle Noodlemake() return new SouthNoodle(); /具体的面条制作方法 class NorthMaker implements Canteen /具体工厂北方厨师实现食堂接口 public Rice Ricemake() return new NorthRice(); /具体的米饭制作方法 public Noodle Noodlemake() return new NorthNoodle(); /具体的面条制作方法 客户端代码为: Canteen sm=new SouthMaker(); /抽象工厂实现 Canteen nm=new NorthMaker(); Rice sr=sm.Ricemake(); Rice nr=nm.Ricemake(); Noodle sn=sm.Noodlemake(); Noodle nn=nm.Noodlemake(); public String toString() String s; if(dcid=0)&(fdid=0) s=sr.makeRice(); else if(dcid=0)&(fdid=1) s=sn.makeNoodle(); else if(dcid=1)&(fdid=0) s=nr.makeRice(); else if(dcid=1)&(fdid=1) s=nn.makeNoodle(); return s; 而用南方水饺代替北方馄钝则可以抽象为适配器模式。其中馄钝担任目标角色,饺子担任源角色,而适配器的任务则由水饺承担。该适配器是采用组合方式来实现的。其类图为:Interface HundunmakeHundun() JiaozimakeHundun()shuijiaomakeJiaozi()其代码为:interface Hundun /目标馄钝接口abstract String makeHundun(); /抽象的制作馄钝方法 class hund implements Hundun /馄钝类实现馄钝接口 public String makeHundun() String s; /具体的制作馄钝方法 s=我要做一份美味的北方馄钝; return s; class Jiaozi /源饺子类 public String makeJiaozi() String s; /具体制作饺子的方法 s=一份美味的南方饺子,请慢用; return s; class shuijiao implements Hundun /适配器水饺类实现馄钝接口private Jiaozi jiao;public shuijiao() /用组合方式实现适配器模式 jiao=new Jiaozi();public String makeHundun() return jiao.makeJiaozi(); /对饺子的制作代替对馄钝的制作 客户端代码为:Jiaozi jz=new Jiaozi(); shuijiao sj=new shuijiao();public Strin

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论