软件设计模式(JAVA) 11_命令模式_实验指导书
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验(上机)十一命令模式
实验(上机)目的
1、练习使用行为型设计模式;
2、练习使用命令模式的设计思路;
3、练习使用命令模式实现“功能按钮与功能之间设置”案例的实现。
实验(上机)课时
2学时
实验(上机)环境
JDK1.8\Eclipse Mars
预备知识
1、命令模式概述;
2、命令模式的结构与实现;
3、命令模式的应用实例;
4、实现命令队列;
5、记录请求日志;
6、实现撤销操作;
7、宏命令;
8、命令模式的优缺点与适用环境。
实验(上机)内容
为了用户使用方便,某系统提供了一系列功能键,用户可以自定义功能键的功能,例如功能键FunctionButton 可以用于退出系统(由SystemExitClass类来实现),也可以用于显示帮助文档(由DisplayHelpClass类来实现)。
用户可以通过修改配置文件爱改变功能键的用途,线使用命令模式来设计改系统,使得功能键类与功能类之间解耦,可为同一个功能键设置不同的功能。
新建解决方案,新建一个控制台应用程序,编写责任模式实现代码,实现以上需求的案例,要求编写为控制台应用程序,并能调试运行。
实验(上机)步骤
1、本实例类图:
2、创建Command的工程,并根据模式的角色创建对应的包。
3、FunctionButton:功能键类,充当请求调用者(请求发送者)。package Invoker;
import mand;
public class FunctionButton {
private Command command;
public Command getCommand() {
return command;
}
public void setCommand(Command command) {
mand = command;
}
public void Click(){
System.out.println("单击功能键!");
command.Execute();
}
}
4、Command:抽象命令类
package Command;
public abstract class Command {
public abstract void Execute();
}
5、ExitCommand:退出命令类,充当具体命令类
package ConcreteCommand;
import mand;
import Receiver.SystemExitClass;
public class ExitCommand extends Command {
private SystemExitClass seObj;
public ExitCommand(){
seObj = new SystemExitClass();
}
public void Execute(){
seObj.Exit();
}
}
6、HelpCommand:帮助命令类,充当具体命令类。
package ConcreteCommand;
import mand;
import Receiver.DisplayHelpClass;
public class HelpCommand extends Command {
private DisplayHelpClass hcObj;
public HelpCommand()
{
hcObj = new DisplayHelpClass();
}
public void Execute()
{
hcObj.Display();
}
}
7、SystemExitClass:退出系统模拟实现类,充当强求接收者。package Receiver;
public class SystemExitClass {
public void Exit(){
System.out.println("退出系统!");
}
}
8、DisplayHelpClass:显示帮助文档模实现类,充当请求接收者。package Receiver;
public class DisplayHelpClass {
public void Display() {
System.out.println("显示帮助文档!");
}
}
9、Client:客户端测试类
package Test;
import mand;
import ConcreteCommand.HelpCommand;
import Invoker.FunctionButton;
public class Client {
public static void main(String[] args) {
FunctionButton fb = new FunctionButton();
Command command = new HelpCommand();
//设置命令对象
fb.setCommand(command);
fb.Click();
}
}
10、结果及分析,编译并运行程序,输出结果如下:
结束
考核内容
1、上交各自建立的电子版解决方案及项目。
2、用EA建模工具编制以上类图。
3、上交实验报告。