软件设计模式设计模式代码_第1页
软件设计模式设计模式代码_第2页
软件设计模式设计模式代码_第3页
软件设计模式设计模式代码_第4页
软件设计模式设计模式代码_第5页
已阅读5页,还剩9页未读 继续免费阅读

下载本文档

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

文档简介

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. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论