命令模式定义
将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化;对请求排队或记录请求日志,以及支持可撤销的操作。
命令模式有4个角色,一个
Command:声明执行操作的接口。
ConcreteCommand:将一个接收者对象邦定于一个动作。调用者收者相应的操作,以实现Execute。
Invoker(Dealer):要求该命令执行这个请求。
Receiver(Light):知道如何实施与执行一个请求相关的操作,任何类都可能是一个接收者。
命令接口
public interface Commond {
public void execute();
public void undo();
}
开灯命令
public class LightOnCommond implements Commond {
private Light light;
public LightOnCommond(Light light) {
this.light = light;
}
public void execute() {
light.on();
}
public void undo() {
light.off();
}
}
关灯命令
public class LightOffCommond implements Commond {
private Light light;
public LightOffCommond(Light light) {
this.light = light;
}
public void execute() {
light.off();
}
public void undo() {
light.on();
}
}
接受命令者 是灯
public class Light {
private String state;
public Light() {
state = "Off";
}
public void on() {
System.out.println("Turn the light on");
state = "On";
}
public void off() {
System.out.println("Turn the light off");
state="off";
}
public String getState() {
return state;
}
}
触发命令者,相当于人 , 开关灯
public class Dealer {
private Vector v;
public Dealer() {
v = new Vector();
}
public void deal(Commond cmd) {
v.addElement(cmd);
cmd.execute();
}
public void unDeal() {
if(v.size() > 0) {
Commond cmd = (Commond)v.get(v.size()-1);
cmd.undo();
v.remove(v.size()-1);
}
}
}
测试类
public class Client {
public static void main(String[] args) {
Light light = new Light();
Dealer dealer = new Dealer();
Commond onCmd = new LightOnCommond(light);
dealer.deal(onCmd);
Commond offCmd = new LightOffCommond(light);
dealer.deal(offCmd);
dealer.unDeal();
}
}
输出结果
Turn the light on
Turn the light off
Turn the light on
- 大小: 40.6 KB
分享到:
相关推荐
打开stm32的时钟配置STM32F4xx_Clock_Configuration_V1.1.0.xls文件,提示不能创建label1,不能退出设计模式,无法使用时钟配置功能,后发现是office补丁问题,安装后解决。附件为office2007和office2010对应补丁。
命令模式(commond) 解释器模式(interpreter) 迭代器模式(iterator) 中介者模式(mediator) 备忘录模式(memento) 观察者模式(observer) 状态模式(state) 空对象模式(null object) 策略模式(strategy) 模板模式...
commond.controller
命令模式(commond) 解释器模式(interpreter) 迭代器模式(iterator) 中介者模式(mediator) 备忘录模式(memento) 观察者模式(observer) 状态模式(state) 空对象模式(null object) 策略模式(strategy) 模板模式...
标题中的“git_command.zip”显然包含了关于Git命令的资料,而描述进一步确认了这一点,指出这些命令是用于管理代码仓库的。标签再次强调了“git_command”及其不同拼写变体,以及“git命令”。考虑到压缩包内的唯一...
9. `grep`:在文件中搜索特定的模式。 10. `find`:在指定目录下查找文件。 11. `cat`:查看或合并文件内容。 12. `more`/`less`:分页查看文件内容。 13. `sudo`:以管理员权限执行命令。 14. `vi/vim`/`nano`:...
VI有三种主要模式:命令模式、插入模式和底行模式。 1. **命令模式**:在此模式下,你可以移动光标、删除文本、复制和粘贴等。 2. **插入模式**:按`i`、`a`、`o`等键进入,此时可以直接在光标位置输入文本。 3. **...
12. **grep**:在文件中搜索特定模式,用于数据查找和过滤。 13. **find**:根据条件在文件系统中查找文件。 14. **which**:找出命令的完整路径,通常用于确认命令的来源。 15. **man**:查看命令的手册页,获取...
当你在Red Hat 8.0中遇到“command not found”(未找到命令)的错误时,通常意味着这些工具尚未安装或者环境变量配置不正确。下面我们将详细解释如何解决这个问题。 首先,我们需要配置本地YUM源。在Red Hat 8.0中...
A commond line compiler extracted from VS2010SP1, no IDE
JAVA 调用 DOS 命令 JAVA 调用 DOS 命令是指在 JAVA 程序中执行 DOS 命令,实现了 JAVA 程序与 DOS 命令的交互。这种交互可以实现多种功能,如获取 DOS 命令的标准输出和错误输出、阻塞当前 JAVA 线程直到命令执行...
异步模式可避免长时间等待。 6. **数据库备份与恢复** - **备份数据库**: `db2 force application all db2 backup db o_yd to d:` 或 `db2 backup db o_yd to \\.\tape0` 备份是保护数据免受意外丢失的关键措施...
### 基于XCode开发Command Line Tools #### 概述 在现代软件开发中,命令行工具(Command Line Tools)扮演着极其重要的角色。它们不仅简化了开发流程中的复杂操作,还为开发者提供了强大的自动化处理能力。...
Linux命令大全搜索工具,内容包含Linux命令手册、详解、学习、搜集。 Linux命令分类 这里存放Linux 命令大全并不全,你可以通过linux-command来搜索,它是把 command 目录里面搜集的...
综上所述,"oracle_commond.rar"这个压缩包文件提供了Oracle数据库操作的重要参考资料,包括ODBC的使用、Oracle客户端工具的介绍、Oracle SQL的命令集以及可能的数据库管理实践。对于Oracle数据库管理员和开发者来说...
包括:a.d b.d final.brf 和3.04版本的 build程序,帮助文档 博文链接:https://sofire.iteye.com/blog/111460
它的设计目标是让存储和处理海量数据变得高效、可靠且可扩展。在Windows系统中,Hadoop的某些功能可能需要特定版本的`hadoop.dll`动态链接库文件来支持。这个压缩包文件“hadoop-commond(hadoop.dll)各个版本.rar”...
这是我初学c#时做的一个UDP心跳程序,可以从本地指定端口向目标主机的指定端口发送心跳信息,代码很简单
使用Command执行数据库命令讲稿PPT,适合新手学习