命令模式 java实验报告

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

命令模式

一、实验目的

练习并掌握命令模式,理解它的适用场景,掌握如何在实际开发过程中使用这个模式,并学会分析这个模式的使用效果。

二、实验内容

模拟带控制开关的小电器。该电器上有四个开关,两个一组,其中一组负责打开、关闭小电器上的照明灯,另一组负责打开、关闭小电器上的摄像头。

三、实验环境

1、PC微机;

2、Windows 操作系统;

3、JDK程序集成环境Eclipse。

四、UML图、源代码及测试结果

1. UML图

2.源代码

1)Invoker

package Machine;

publicclass Invoker {

Command command;

publicvoid setCommand(Command command){ mand = command;

}

publicvoid executeCommand(){

command.execute();

}

}

2)Command

package Machine;

publicinterface Command {

publicabstractvoid execute();

publicabstract String getName();

}

3)Light

package Machine;

publicclass Light{

publicvoid on(){

System.out.println("灯亮");

}

publicvoid off(){

System.out.println("灯暗");

}

}

4)Camera

package Machine;

publicclass Camera {

publicvoid on(){

System.out.println("摄像头开");

}

publicvoid off(){

System.out.println("摄像头关");

}

}

5)OnLightCommand

package Machine;

publicclass OnLightCommand implements Command{ Light light;

OnLightCommand(Light light){

this.light=light;

}

publicvoid execute(){

light.on();

}

public String getName(){

return"打开照明灯";

}

}

6)OffLightCommand

package Machine;

publicclass OffLightCommand implements Command{ Light light;

OffLightCommand(Light light){

this.light=light;

}

publicvoid execute(){

light.off();

}

public String getName(){

return"关闭照明灯";

}

}

7)OnCameraCommand

package Machine;

publicclass OnCameraCommand implements Command { Camera camera;

OnCameraCommand(Camera camera){

this.camera=camera;

}

publicvoid execute(){

camera.on();

}

public String getName(){

return"打开摄像头";

}

}

8)OffCameraCommand

package Machine;

publicclass OffCameraCommand implements Command { Camera camera;

OffCameraCommand(Camera camera){

this.camera=camera;

}

publicvoid execute(){

camera.off();

}

public String getName(){

return"关闭摄像头";

}

}

3. 测试结果

五、心得体会

通过这次实验,加深了我对命令模式的了解。命令模式是将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。同时命令模式也支持可撤销的操作,还能实现队列请求,日志请求。

相关文档
最新文档