欢迎来到天天文库
浏览记录
ID:12369857
大小:289.00 KB
页数:29页
时间:2018-07-16
《设计模式综合实现含源码(策略模式 适配器模式 装饰者模式 抽象工厂模式 迭代器和组合模式 观察者模式)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、软件构造第6次实验实验报告班级:学号:姓名:2016年4月27日一.设计(由于类较多,很难清晰地展示,类图将作为附件与该文档同时上交。)本次实验旨在合理地将一群设计模式结合起来以解决一般性问题,其中包括了策略模式、适配器模式、装饰者模式、抽象工厂模式、迭代器和组合模式以及观察者模式。大致的思路如下:①鹅想要伪装成鸭子——适配器模式;②鸭子学家想要统计叫声的次数——装饰者模式。通过把鸭子包装给装饰者对象,让鸭子具有新行为,即统计叫的次数;③为了确保所有的鸭子都添加了装饰者——27抽象工厂模式。我们通过抽象工厂模式来创建鸭子,以确保质量达到要求;①为了便于管理,将鸭子集结成鸭群
2、——迭代器和组合模式。这其实是一个树状结构,利用迭代器进行遍历使得管理更加方便;②当鸭子叫时,鸭子学家想要被告知——观察者模式。实现这个功能的过程中同样用到了迭代器,学家不仅可以当某个鸭子的观察者,甚至可以当一整群鸭子的观察者。③这个鸭子游戏还没有考虑飞行、游泳等行为,并且想要动态修改鸭子的行为——策略模式;④“鸡”也想伪装成鸭子——适配器模式;⑤想要统计鸭子飞行、游泳的次数——观察者模式;⑥让鸭子飞行时通知——观察者模式。(鸭子游戏的拓展过程中出现的重要的具体问题请见“三”。)二.实现1.QuackBehaviorpackageQuackable;publicinterf
3、aceQuackBehavior{voidquack();}2.HonkpackageQuackable;importElse.Observer;//呱呱叫行为之一publicclassHonkimplementsQuackBehavior{publicvoidquack(){System.out.println("---Honk---");}27}3.KwakpackageQuackable;importElse.Observer;//呱呱叫行为之一publicclassKwakimplementsQuackBehavior{publicvoidquack(){Syste
4、m.out.println("---Kwak---");}}4.QuackpackageQuackable;importElse.Observer;//呱呱叫行为之一publicclassQuackimplementsQuackBehavior{publicvoidquack(){System.out.println("---Quack---");}}5.SqueakpackageQuackable;importElse.Observer;//呱呱叫行为之一publicclassSqueakimplementsQuackBehavior{publicvoidquack(){
5、System.out.println("---Squeak---");}}6.WowpackageQuackable;publicclassWowimplementsQuackBehavior{publicvoidquack(){System.out.println("---Wow---");}27}7.FlyablepackageFlyable;importElse.*;publicinterfaceFlyable{voidfly();}8.FlyNoWaypackageFlyable;publicclassFlyNoWayimplementsFlyable{public
6、voidfly(){System.out.println("[Flynoway]");}}9.FlyWithWingspackageFlyable;publicclassFlyWithWingsimplementsFlyable{publicvoidfly(){System.out.println("[Flywithwings]");}}10.SwimablepackageSwimable;publicinterfaceSwimable{voidswim();}11.SwimInSomeWaypackageSwimable;publicclassSwimInSomeWayi
7、mplementsSwimable{publicvoidswim(){System.out.println("Swiminsomeway.");}}2712.SwimNoWaypackageSwimable;publicclassSwimNoWayimplementsSwimable{publicvoidswim(){System.out.println("Swimnoway.");}}13.DuckpackageKindsOfDucks;importElse.Observer;importFlyable.Flya
此文档下载收益归作者所有