您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 其它文档 > 命令模式案例实验报告
软件设计与体系结构实验报告课程名称软件设计与体系结构课程编号0920116实验项目名称命令模式案例学号班级姓名专业学生所在学院指导教师实验室名称地点实验时间实验名称:命令模式案例实验目的:命令模式(ObserverPattern)是设计模式中行为模式的一种,它解决了上述具有一对多依赖关系的对象的重用问题。此模式的参与者分为两大类,一类是被观察的目标,另一类是观察该目标的观察者们。正因为该模式是基于“一对多”的关系,所以该模式一般是应用于由一个目标对象和N个观察者对象组成(当然也可以扩展为有多个目标对象,但我们现在只讨论前者)的场合。当目标对象的状态发生改变或做出某种行为时,正在观察该目标对象的观察者们将自动地、连锁地作出相应的响应行为。通过本次实验了解观察者模式的原理。并能够运用观察者模式来进行编程。实验内容1UML类图命令模式-烧烤店-松耦合设计:2程序的源代码命令模式-烧烤店-松耦合设计:packageBake;publicclassBakeChickenWingCommandextendsCommand{publicBakeChickenWingCommand(Barbecuerreceiver){super(receiver);//TODOAuto-generatedconstructorstub}@OverridepublicvoidExecuteCommand(){//TODOAuto-generatedmethodstubreceiver.BakeChickenWing();}}packageBake;publicclassBakeMuttonCommandextendsCommand{publicBakeMuttonCommand(Barbecuerreceiver){super(receiver);//TODOAuto-generatedconstructorstub}@OverridepublicvoidExecuteCommand(){//TODOAuto-generatedmethodstubreceiver.BakeMutton();}}packageBake;publicclassBarbecuer{publicvoidBakeMutton(){System.out.println(烤羊肉串);}publicvoidBakeChickenWing(){System.out.println(烤鸡翅);}}packageBake;publicabstractclassCommand{protectedBarbecuerreceiver;publicCommand(Barbecuerreceiver){super();this.receiver=receiver;}abstractpublicvoidExecuteCommand();}packageBake;importjava.util.ArrayList;importjava.util.List;importjava.util.ListIterator;publicclassWaiter{privateListCommandorders;publicWaiter(){super();orders=newArrayListCommand();}publicvoidSetOrder(Commandcommand){if(command.toString().substring(0,14).equals(Bake.BakeChick)){System.out.println(鸡翅没有了,请点别的烧烤。);}//elseif(command.toString().substring(0,14).equals(Bake.BakeMutto)){//System.out.println(Themuttonhavebeensoldout,pleasetrysomethingelse);//}else{orders.add(command);System.out.println(点餐:+command.toString().substring(5,15));}}publicvoidCancelOrder(Commandcommand){orders.remove(command);System.out.println(取消点餐:+command.toString().substring(0,15));}publicvoidNotify(){ListIteratorCommandi=orders.listIterator();while(i.hasNext()){i.next().ExecuteCommand();}}}packageBake;publicclassTest{/***@paramargs*/publicstaticvoidmain(String[]args){//TODOAuto-generatedmethodstubBarbecuerboy=newBarbecuer();Commandbm=newBakeMuttonCommand(boy);Commandbc=newBakeChickenWingCommand(boy);WaiterBelldandy=newWaiter();Belldandy.SetOrder(bm);Belldandy.SetOrder(bc);Belldandy.Notify();}}3实验截图命令模式-烧烤店-松耦合设计:对该模式的认识经过本次命令模式的实验,通过自己动手编代码,是自己理解命令模式机制,并且知道命令模式有以下的优点:适用性:想要实现回调函数功能,想要在不同的时刻指定、排列和执行请求,需要支持取消和改变日志操作;效果:命令模式将调用操作的对象与知道如何实现该操作的对象解耦,Command是头等的对象。它们可像任何其他对象一样被操纵和扩展,多个命令能被装配成一个复合命令。经过本次实验课的练习,我明白了编代码也是一种技巧,而设计模式便是大家提炼出来的有技巧编代码。使我对软件设计与体系结构这门课有了浓厚的兴趣,相信在学习这门课的知识,会让我获益良多。扣分原因(有扣分时填写)扣分
本文标题:命令模式案例实验报告
链接地址:https://www.777doc.com/doc-7393313 .html