资源预览内容
第1页 / 共4页
第2页 / 共4页
第3页 / 共4页
第4页 / 共4页
亲,该文档总共4页全部预览完了,如果喜欢就下载吧!
资源描述
抽象工厂模式与适配器模式在食堂案例中的体现一一谁说众口难调软件 02023125020218王继花终于熬到放学了,又饿又累的同学们拧着书包冲向了他们最满意的食堂一一众I I可调食 堂。可是同学们来自五湖四海,丨I味自然相差甚远。为了让每位同学都能吃上自己喜欢的食 物,食堂掌门人广发英雄帖,遍邀天下名厨前来比艺。后来,一位南方厨师一举夺得金刀御 厨的桂冠,一位北域庖也被光荣聘为银刀御厨。南方金刀擅长做各种南方食物,如各种南 方米饭,面条,饺子等;北域疱丁则精通各类北方食物,如各色北方米饭,面条等,遗憾的 是他不会做馄钝。不过,掌门人认为水饺和馄钝一样都是以面包馅,放入汤中煮熟即可,所 以他决定挂羊头卖狗肉,用南方的水饺代替北方的馄钝。上面的例子可以抽象为抽象工厂模式与适配器模式。南北厨师做南北米饭面条可以抽彖为抽彖工厂模式。其中食堂担任抽彖工厂角色:南方 厨师和北方厨师担任具体工厂角色;米饭和面条担任抽彖产品角色;而具体产品角色则为南 方米饭,北方米饭,南方面条,北方面条。抽象产品一一米饭接I抽彖的制作米饭方法南方米饭类实现米饭接11具体的制作米饭方法111SoutliNoodle1 11 1?1NonAoodleII1I1I1makeNoodleQiI1H -1 11makeNoodle()其具体代码为:lnteiiace Riceabstract Suing makeRiceQ;class SouthRice unplements Rice public String makeRice()Stimg s;s=” 一份美味的南方米饭,请慢用蔦return s;北方米饭类实现米饭接11具体的制作米饭方法抽彖产品一一面条接II抽彖的制作面条方法南方面条类实现面条接II具体的制作面条方法北方面条类实现面条接II具体的制作面条方法mteiiace Canteenpublic Rice Ricemake(); public Noodle NoodlemakeQ;class SouthMaker implements Canteen public Rice Ricemake() return new SoutliRiceQ;public Noodle Noodlemake() return new SoutliNoodle();class NortliMaker implements Canteen public Rice Ricemake() return new NoitliRice();抽彖工厂一一食堂接【I 抽彖的米饭制作方法 抽彖的面条制作方法具体工厂一一南方厨师实现食堂接I具体的米饭制作方法具体的面条制作方法具体工厂一一北方厨师实现食堂接I/具体的米饭制作方法public Noodle Noodlemake()class NorthRice unplements Rice public Strmg makeRice()Stimg s;s=“一份美味的北方米饭,请慢用笃 return s;mteiiace Noodle abstract String makeNoodleQ;class SouthNoodle unplements Noodle public Strmg makeNoodle()Stimg s;s=“一份美味的南方面条,请慢用“; return s;class NorthNoodle unplements Noodle public Strmg makeNoodle()Stimg s;s=“一份美味的北方面条,请慢用“; return s;return new NortliNoodleQ;客户端代码为:Canteen sm=new SoutliMakei();Canteen mn=new NoithMaker();Rice si-sm.Riceniake();Rice ni-mn.Riceniake();Noodle sn=sm.NoodlemakeQ;Noodle im=mn.NoodleniakeQ;public String toStringQStrmg s;if(dcid=O)&(ftiid=O) s=sr.makeRice();else if(dcid=O)&(fdid=l) s=sn.makeNoodle();else if(dcid=l)&(fdid=O) s=mmakeRice();else if(dcid=l)&(fdid=l) s=mi.makeNoodleQ;return s;具体的而条制作方法抽象工厂实现而用南方水饺代替北方馄钝则可以抽象为适配器模式。其中馄钝担任目标角色,饺子担 任源角色,而适配器的任务则由水饺承担。该适配器是采用组合方式来实现的。其类图为:Interface HundunmakeHundun()AJiaozimakeHundunQ目标一一馄钝接I I抽象的制作馄钝方法其代码为: mteiiace Hundun abstract Stimg niakeHundun();class hund miplements Hundun馄钝类实现馄钝接 I Ipublic Strmg makeHundunQStrmg s;/具体的制作馄钝方法s=”我要做一份美味的北方馄钝;return s;class Jiaozipublic Strmg makeJiaoziQStiiiig s;s=份美味的南方饺子, return s;class shuijiao implements Hundunprivate Jiaozi jiao;public shuijiao。jiao=new JiaoziQ;public String makeHundun()return jiao.niakeJiaozi();源一一饺子类具体制作饺子的方法 请慢用”;适配器一一水饺类实现馄钝接11用组合方式实现适配器模式对饺子的制作代替对馄钝的制作客户端代码为:Jiaozi jz=new JiaoziQ;shuijiao sj=new shuijiao。;public Strmg toStimg()Strmg s;else if(dcid=O)&(fdid=2)syj 乙 niakeJiaozi();else if(dcid=l)&(fdid=3)s=”馄钝来了,虽然它本是南方饺子,但它更好吃又好看5,” +sj .niakeHundun();return s;
收藏 下载该资源
网站客服QQ:2055934822
金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号