JAVA设计模式之 命令模式【Command Pattern】
一、概述
命令模式能够将请求发送者和接收者全然解耦。发送者与接收者之间没有直接引用关系,发送请求的对象仅仅须要知道怎样发送请求,而不必知道怎样完毕请求。核心在于引入了命令类,通过命令类来减少发送者和接收者的耦合度,请求发送者仅仅需指定一个命令对象,再通过命令对象来调用请求接收者的处理方法,命令模式是一种对象行为型模式。
二、使用场景
1>、系统要求请求发送者和接收者的解耦,使得调用者和接收者不直接交互;
2>、类似消息 请求/命令 队列处理。[命令装载在集合或队列中,通过遍历集合,达到命令的批量处理]
3>、当运行一个命令而触发多个详细命令的运行,从而实行对命令的批量处理。这样的命令被称为组合命令或宏命令;
三、UML类图
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvamFuaWNlMDUyOQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
四、參与者
1>、Command(抽象命令类):抽象命令类通常是一个抽象类或接口。在当中声明了用于运行请求的execute()等方法。通过这些方法能够调用请求接收者的相关操作。
2>、ConcreteCommand(详细命令类):详细命令类是抽象命令类的子类,实现了在抽象命令类中声明的方法,它相应详细的命令接收者对象。将接收者对象的动作绑定当中。在实现execute()方法时。将调用接收者对象的相关操作(operation)。
3>、Invoker(命令发起者/消息请求者):与抽象命令类存在关联关系,在命令发起时 将一个详细命令对象注入当中 再调用详细命令对象的运行方法(execute) 从而间接实现调用请求接收者的相关操作。
4>、Receiver(命令/消息 接收者):接收者运行与请求相关的操作。它详细实现对请求的业务处理(operation方法运行)。
五、用例学习
1、命令接收者A:ReceiverA.java
/**
* 命令接收者A
* @author lvzb.software@qq.com
*
*/
public class
JAVA设计模式之 命令模式【Command Pattern】的更多相关文章
- 乐在其中设计模式(C#) - 命令模式(Command Pattern)
原文:乐在其中设计模式(C#) - 命令模式(Command Pattern) [索引页][源码下载] 乐在其中设计模式(C#) - 命令模式(Command Pattern) 作者:webabcd ...
- 二十四种设计模式:命令模式(Command Pattern)
命令模式(Command Pattern) 介绍将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可取消的操作. 示例有一个Message实体类,某个 ...
- 设计模式-15命令模式(Command Pattern)
1.模式动机 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需在程序运行时指定具体的请求接收者即可,此时,可以使用命令模式来进行设计,使 ...
- 【UE4 设计模式】命令模式 Command Pattern
概述 描述 将一个请求封装为一个对象,从而使我们可用不同的请求对客户进行参数化:对请求排队或者记录请求日志,以及支持可撤销的操作. 命令模式是一种对象行为型模式,其别名为动作(Action)模式或事务 ...
- 设计模式 - 命令模式(command pattern) 多命令 具体解释
命令模式(command pattern) 多命令 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考命令模式: http://blog.csdn.ne ...
- 设计模式 - 命令模式(command pattern) 具体解释
命令模式(command pattern) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 命令模式(command pattern) : 将请求封装成对 ...
- 设计模式 - 命令模式(command pattern) 宏命令(macro command) 具体解释
命令模式(command pattern) 宏命令(macro command) 具体解释 本文地址: http://blog.csdn.net/caroline_wendy 參考: 命名模式(撤销) ...
- 设计模式 - 命令模式(command pattern) 撤销(undo) 具体解释
命令模式(command pattern) 撤销(undo) 详细解释 本文地址: http://blog.csdn.net/caroline_wendy 參考命令模式: http://blog.cs ...
- 设计模式 ( 十三 ) 命令模式Command(对象行为型)
设计模式 ( 十三 ) 命令模式Command(对象行为型) 1.概述 在软件设计中,我们经常需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是哪个,我们只需 ...
- 折腾Java设计模式之命令模式
博客原文地址 折腾Java设计模式之命令模式 命令模式 wiki上的描述 Encapsulate a request as an object, thereby allowing for the pa ...
随机推荐
- EasyUI datagrid 双击行事件
1.EasyUI 实现点击行的任何位置,触发事件 onLoadSuccess:function(data){ } , pagination : false, //双击事件 onDblClickRow: ...
- 基于Nginx的开墙方案
Kubernetes集群内部通过服务名能进行相互调用,但如果Kubernetes中的pod需要调用外部服务,而且这些外部服务是属于不同的安全区域,就面临开墙的问题,因为Kubernetes Pod能够 ...
- 深入理解Java中为什么内部类可以访问外部类的成员
内部类简介 虽然Java是一门相对比较简单的编程语言,但是对于初学者, 还是有很多东西感觉云里雾里, 理解的不是很清晰.内部类就是一个经常让初学者感到迷惑的特性. 即使现在我自认为Java学的不错了, ...
- 一步一步学RenderMonkey(4)--点光源光照模型 【转】
转载请注明出处:http://blog.csdn.net/tianhai110 点光源光照模型: 公式: I = Icolor*attenuation; ...
- timeline bugs
timeline有个问题巨坑 修了很久 就是一个track控制character的position 另一个track控制同一个character的animaion 拖一段现成的动画进去 这种情况 会有 ...
- WebService基于SoapHeader实现安全认证[webservice][.net][安全][soapheader]
摘 自: http://blog.sina.com.cn/s/blog_72b7a82d0100yyp8.html WebService基于SoapHeader实现安全认证[webservice][. ...
- Python函数:使用谷歌翻译翻译英语字符串
代码是同事写的,我把它单独抠出来,可以作为工具函数使用.当然,性能还是个问题,有待解决. import random import cookielib import urllib import url ...
- iOS文件上传文件URL错误Invalid parameter not satisfying: fileURL'
一:iOS文件上传提示URL错误 Invalid parameter not satisfying: fileURL' 二:解决方法: NSString *imagePath = [[NSBundle ...
- Can report_aeroo_ooo work with Ubuntu 13.10?
来 自 :https://www.odoo.com/forum/help-1/question/can-report-aeroo-ooo-work-with-ubuntu-13-10-34314 I ...
- Cacti监控mysql数据库服务器实现过程
Cacti监控mysql数据库服务器实现过程 2014-05-29 0个评论 来源:Cacti监控mysql数据库服务器实现过程 收藏 我要投稿 1 先在cacti服务器端安 ...