Command Pattern 命令模式
定义: 命令模式将‘请求’封装成对象,以便使用不同的请求,队列或者日志来参数化其他对象,命令模式也支持可撤销的操作。
类图

如上图所示:Command类是用来声明执行操作的接口;ConcreteCommand类,将一个接收者对象绑定于一个动作,调用接收者相应的操作,以实现Execute;Receiver类,知道如何实施与执行一个与请求相关的操作,任何类都可能作为一个接收者;Invoker类,要求该命令执行这个命令。
命令模式实现:
/**
*声明执行者接口
*/
public abstract class Command { public abstract void excute(); //public abstract void undo(); 撤销命令
} /**
*执行请求者相关的操作,任何类都可以作为一个接受者
*/
public class Receiver { public void action() {
System.out.println("执行请求..........");
}
} /**
*将一个接收者对象绑定于一个动作,调用接收者相应的操作
*/
public class ConcreateCommand extends Command { //绑定一个接受者对象
Receiver receiver; public ConcreateCommand(Receiver receiver) {
this.receiver=receiver;
} @Override
public void excute() {
receiver.action();
} } /**
* 设置命令,执行这个命令
*
*/
public class Invoker { /**设置具体的命令,可以是一组命令,然后执行命令**/
Command command; public void setCommand(Command command) {
this.command=command;
} public void executeCommand() {
command.excute();
}
} public class CommandPatternTest { public static void main(String[] args) { //一个接受者
Receiver receiver =new Receiver(); Command command =new ConcreateCommand(receiver); Invoker i=new Invoker(); //设置命令
i.setCommand(command);
//执行命令
i.executeCommand();
} }
Command Pattern 命令模式的更多相关文章
- Command Pattern -- 命令模式原理及实现(C++)
主要参考<大话设计模式>和<设计模式:可复用面向对象软件的基础>两本书.本文介绍命令模式的实现. What it is:Encapsulate a request as an ...
- (Command Pattern)命令模式
定义 将“请求”封装成对象,以便使用不同的请求.队列或者日志来参数化其他对象.命令模式也支持可撤销的操作. 结构图: 命令模式的角色划分: Reciever(命令的接收者):接收命令,并知道如何进行必 ...
- [Design Pattern] Command Pattern 命令模式
发现公司的代码好像有用到 Command Pattern,回顾重温下. Command Pattern 的类图结构如下: 参考 <Head First Design Patterns(英文版)& ...
- Design Pattern - 命令模式
一般执行一个操作的过程, 创建对象, 并调用对象的函数, 函数执行, 返回 比如下面的类图, client直接调用Receiver.action 而命令模式, 抽象出command对象, 并在comm ...
- c#设计模式系列:命令模式(Command Pattern)
引言 命令模式,我感觉"命令"就是任务,执行了命令就完成了一个任务.或者说,命令是任务,我们再从这个名字上并不知道命令的发出者和接受者分别是谁,为什么呢?因为我们并不关心他们是谁, ...
- 命令模式(Command)
命令模式(Command) 命令模式很好理解,举个例子,司令员下令让士兵去干件事情,从整个事情的角度来考虑,司令员的作用是,发出口令,口令经过传递,传到了士兵耳朵里,士兵去执行.这个过程好在,三者相互 ...
- Java设计模式の命令模式
意图: 将一个请求封装为一个对象,从而可用不同的请求对客户进行参数化:对请求排队或记录日志,以及支持可撤销的操作 动机: 将”发出请求的对象”和”接收与执行这些请求的对象”分隔开来. 效果: 1).c ...
- js命令模式
命令模式(Command),将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤销的操作. 从命令模式的结构图可以看出,它涉及到五个角色,它们分别是 ...
- Command and Query Responsibility Segregation (CQRS) Pattern 命令和查询职责分离(CQRS)模式
Segregate operations that read data from operations that update data by using separate interfaces. T ...
随机推荐
- 首师大附中科创教育平台 我的刷题记录 3120 LJX的校园:入学典礼
今天给大家献上"C"级题:LJX的校园:入学典礼!! 试题编号:3120 LJX的校园:入学典礼 难度级别:C: 运行时间限制:45ms: 运行空间限制:256000K ...
- 最小化安装的CentOS7挂载ntfs格式的U盘
准备从系统中拷贝一些文件到U盘,插上U盘. 一.获得U盘的设备识别符 fdisk -l 啊哈,我看到了,是/dev/sdb1 二.熟练的挂载 mount /dev/sdb1 /mnt/usb Duan ...
- Js零散知识点笔记
1.将类数组对象转换为数组 ES5: var arrLike = document.querySelectorAll('span'); var arr = Array.prototype.slice. ...
- JavaScript、jQuery、fish的遍历方法(each、forEach)总结
起因 在工作中,需要在遍历的dom中找到第一个并做下操作然后退出遍历,我首先想到了用each方法,但由于无论是公用的jQuery组件还是公司的fish组件.我都忘记了怎么去退出遍历,所以就有了这篇帖子 ...
- eclipse设置项目编码
首先Windows->Preferences, 然后选择General下面的Workspace. Text file encoding选择Other GBK, 如果没有GBK的选项, 没关系, ...
- Oralce 账户被锁后的解决办法
SQL> connect sys/sys as sysdba; 已连接. SQL> alter user system account unlock; 用户已更改. www.2cto.c ...
- Android UiAutomator快速调试
在测试类中添加主函数 public static void main(String[] args){ String jarName,testClass, testName,androidId; jar ...
- 把excel导入的自定义时间改成yyyyMMdd
public static String changeCellToString(XSSFCell cell){ String result = "";// Object value ...
- unity自带寻路Navmesh入门教程(二)
上一节简单介绍了NavMesh寻路的基本用法,这次来介绍一下稍微复杂一点点的高低落差以及跳跃的做法,首先来看看这次的目标: 由于博客相册上传GIF有限制,所以我把整个过程切开了2部分上传,第一部分 ...
- VMWARE里启动kylin16.0时出现'SMBus Host Controller not enabled'(还未进入系统)
在Vmware里安装完Ubuntu16.10,启动时出现'SMBus Host Controller not enabled'错误提示,进不到图形界面.网上搜了一下,解决办法是在图形界面里进终端窗口, ...