软件设计模式(JAVA) 11_命令模式_实验指导书

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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、上交实验报告。

相关文档
最新文档