命令模式 java实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 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. 测试结果
五、心得体会
通过这次实验,加深了我对命令模式的了解。命令模式是将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。同时命令模式也支持可撤销的操作,还能实现队列请求,日志请求。