




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1.QuackablepackageerfaceQuackablepublicvoidquack();//QuackableQuack(呱呱叫} 现在某些鸭子实现了QuackablepublicclassMallardDuckimplements1.QuackablepackageerfaceQuackablepublicvoidquack();//QuackableQuack(呱呱叫} 现在某些鸭子实现了QuackablepublicclassMallardDuckimplementsQuackablepublicvoidquack()}}packagepublicclassRedheadDuckimplementspublicvoid}}packagepublicclassDuckCallimplementsQuackable//DuckCall(鸭鸣器publicvoid}}packagepublicclassRubberDuckimplementsQuackable//RubberDuck(橡publicvoid}}packagepublicclassDuckSimulatoricvoidmain(Stringargs publicDuckSimulatorsimulator=DuckSimulator//}voidQuackablemallardDuck=newMallardDuck//把每一种会叫的redheadDuck=newduckCall=newDuckCall();rubberDuck=new}voidQuackablemallardDuck=newMallardDuck//把每一种会叫的redheadDuck=newduckCall=newDuckCall();rubberDuck=newRubberDuck();ln("\nDucksimulate(mallardDuck//开始模拟每种鸭子}voidsimulate(Quackable 重载了simulate()duck.quack();//剩下的事就让多态发挥作用,无论传入哪一种对象,多态}}DuckSimulatorpackagepublicclassGoosepublicvoid }}5.Quackable接口.既然鹅不会呱呱叫package importpublicclassGooseAdapterimplementsQuackable{Goosegoose;publicGooseAdapter(Goosethis.goose=}publicvoidquack(){}}publicclassGooseAdapterimplementsQuackable{Goosegoose;publicGooseAdapter(Goosethis.goose=}publicvoidquack(){}}packageDuckSimulatoricvoidmain(String[args) publicDuckSimulatorsimulatornewDuckSimulator()//创建一个模拟器,}voidQuackablemallardDuck=newMallardDuck()//把每一种会叫的东西都产生redheadDuck=newRedheadDuck();duckCall=newDuckCall();rubberDuck=newRubberDuck();gooseDucknewGooseAdapter(newGoose());//通过把包装进ln("\nDucksimulate(mallardDuck//开始模拟每种鸭子simulate(gooseDuck);//}voidsimulate(Quackable}}7.DuckSimulator8.}voidsimulate(Quackable}}7.DuckSimulator8.packageimport publicclassQuackCounterimplementsQuackablesnumberOfQuacks//publicQuackCounter(Quackableduck){//将Quackable当作参数传入构造器, this.duck=}publicvoid} publicreturn}}包装在QuackCounterQuackablepackageimportDuckSimulatoricvoidmain(String[]args){publicDuckSimulatorsimulatornewDuckSimulator()DuckSimulatoricvoidmain(String[]args){publicDuckSimulatorsimulatornewDuckSimulator()//创建一个模拟器,}voidQuackablemallardDuck=newQuackCounter(newMallardDuck());redheadDuck=newQuackCounter(newRedheadDuck());duckCall=newQuackCounter(newDuckCall());rubberDuck=newQuackCounter(newRubberDuck());gooseDucknewGooseAdapter(newGoose());//通过把包装进ln("\nDuckSimulator:Withsimulate(mallardDuck);//开始模拟每种鸭子simulate(gooseDuck);//一旦鹅被包装起来,"times");//}voidsimulate(Quackable}}输出DuckSimulator:WithDecoratorTheducksquacked需要一些质量控制来确保鸭子一定是被包装起来的要建造一个工厂,packageimport publicabstractclassAbstractDuckFactoryTheducksquacked需要一些质量控制来确保鸭子一定是被包装起来的要建造一个工厂,packageimport publicabstractclassAbstractDuckFactory子}packageDuckFactoryextends//publicQuackablecreateMallardDuck(){ returnnew}publicQuackablereturnnew}publicQuackablereturnnew}publicQuackablereturnnew}}packageCountingDuckFactoryextendspublicQuackablereturnnewQuackCounter(new}}packageCountingDuckFactoryextendspublicQuackablereturnnewQuackCounter(new}publicQuackablereturnnewQuackCounter(new}publicQuackablereturnnewQuackCounter(new}publicQuackablereturnnewQuackCounter(new}}11.厂 就会得到不同的产package。DuckSimulatoricvoidmain(String[]args){publicDuckSimulatorsimulatornewDuckSimulator()//创建一个模拟器,}voidsimulate(AbstractDuckFactoryduckFactory)//simulate()mallardDuck=duckFactory.createMallardDuck();redheadDuck=duckFactory.createRedheadDuck();duckCall=duckFactory.createDuckCall();rubberDuck=duckFactory.createRubberDuck();gooseDucknewGooseAdapter(newGoose());//通过把包装进}voidsimulate(AbstractDuckFactoryduckFactory)//simulate()mallardDuck=duckFactory.createMallardDuck();redheadDuck=duckFactory.createRedheadDuck();duckCall=duckFactory.createDuckCall();rubberDuck=duckFactory.createRubberDuck();gooseDucknewGooseAdapter(newGoose());//通过把包装进ln("\nDuckSimulator:Withsimulate(mallardDuck);//开始模拟每种鸭子simulate(gooseDuck);//一旦鹅被包装起来,"times");//}voidsimulate(Quackable}}DuckSimulator:WithDecoratorTheducksquacked12.创建一群鸭子(实际上是一群package classFlockimplementsArrayListquackers=newpublicvoidadd(Quackablequacker){quackers.add(quacker);}publicvoidIteratoriterator=ArrayListquackers=newpublicvoidadd(Quackablequacker){quackers.add(quacker);}publicvoidIteratoriterator=whileQuackablequacker=(Quackable)iterator.next();}}}13.packageclassDuckSimulatorpublicicvoidmain(String[]DuckSimulatorsimulatornewDuckSimulator()//创建一个模拟器,}voidsimulate(AbstractDuckFactoryduckFactory)//simulate()方法需要//QuackablemallardDuck=redheadDuck=duckFactory.createRedheadDuck();duckCall=duckFactory.createDuckCall();rubberDuck=duckFactory.createRubberDuck();gooseDucknewGooseAdapter(newGoose());//通过把包装进ln("\nDuckSimulator:WithDecorator-FlockflockOfDucks=newFlock();FlockflockOfMallards=newQuackablemallardOne=FlockflockOfDucks=newFlock();FlockflockOfMallards=newQuackablemallardOne=mallardTwo=mallardThree=duckFactory.createMallardDuck();mallardFour=duckFactory.createMallardDuck();;////simulate(gooseDuck);//一旦鹅被包装起来 ln("\nDuckSimulator:WholeFlockln("\nDuckSimulator:MallardFlock"times");//}voidsimulate(Quackable}DuckSimulator:WithDecorator-DuckSimulator:WholeFlockDuckSimulator:MallardFlockTheducksquacked14.packageimporterfaceQuackObservableDuckSimulator:MallardFlockTheducksquacked14.packageimporterfaceQuackObservable publicvoidnotifyObservers()//}现 需要确定所有的Quackable都实现此接erfaceQuackableextendsQuackObservable publicvoidquack();//QuackableQuack(呱呱叫}15.须确定所有实现Quakable的具体类都能够扮演QuackObservable要在另一个被称为Observable的类中封装和通知的代码,然后将它和 publicclassObservableimplementsQuackObservableArrayList<Observer>duck6=newArrayList<Observer>();QuackObservableduck;publicObservable(QuackObservableduck)this.duck=}publicvoidregisterObserver(Observerobserver)}publicvoidnotifyObservers()Iterator<Observer>iterator=while(iterator.hasNext()){Observer}publicvoidnotifyObservers()Iterator<Observer>iterator=while(iterator.hasNext()){Observerduck6=iterator.next();}}publicIterator<Observer>getObservers()return}}16Observable辅助类和QuackableQuackable类是和ObservablepublicclassMallardDuck2extendsMallardDuckObservablepublicMallardDuck2()duck6=new}publicvoidquack()}publicvoid}observer)publicvoidnotifyObservers()}}17 erfaceObserverpublicvoidupdate(QuackObservable}publicclassQuackologistimplementsObserverpublicvoidupdate(QuackObservableduck)ln("Quackologist:"+duck+
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 挖掘机平整地面施工方案
- 锚固桩施工方案
- 惠州市润根电器有限公司 AC 电源线及插头的生产建设项目环评报告表
- 初中半期考答案数学试卷
- 仿玉石楼梯扶手施工方案
- 小学校园内管网施工方案
- 房建地下连续梁施工方案
- 别墅的专项施工方案
- 农田排水降水施工方案
- 黄桃高产栽培技术的高效应用及科学推广措施分析
- DBJ∕T 15-104-2015 预拌砂浆混凝土及制品企业试验室管理规范
- 装配式建筑叠合板安装技术交底
- 2022年HTD-8M同步带轮尺寸表
- 皮带滚筒数据标准
- 脚手架操作平台计算书
- 内科学第八版循环系统教学大纲
- 煤矿供电系统及供电安全讲座方案课件
- 绿色建筑及材料分析及案列
- 实用中西医结合诊断治疗学
- 幕墙工程技术标范本
- 《施工方案封面》
评论
0/150
提交评论