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 ...
随机推荐
- 基本C库函数
当编写驱动程序时,一般情况下不能使用C标准库的函数.Linux内核也提供了与标准库函数功能相同的一些函数,但二者还是稍有差别. 类别 函数名 功能 函数形成 参数 描述 字符串转换 simple_st ...
- 如何释放 DB_RECOVERY_FILE_DEST_SIZE
转自原文 如何釋放 DB_RECOVERY_FILE_DEST_SIZE,有删减 oracle默認安裝之後,如何沒有手動設置歸檔路徑(alter system set log_archive_dest ...
- iOS 在某一个ViewController跳转到TabViewController中的某一个ViewController
要做到这个分为两步 第一步, 导入app #import "AppDelegate.h" 第二步, 监听方法中先写加入以下代码: [self dismissViewControll ...
- zxing生成二维码和读取二维码
当然,首先要导入zxing的jar包. 生成二维码代码: package com.imooc.zxing; import java.io.File; import java.nio.file.Path ...
- 用google mock模拟C++对象
google mock是用来配合google test对C++项目做单元测试的.它依赖于googletest(参见我上篇文章<如何用googletest写单元测试>: http://blo ...
- Weblogic常见故障之二:XAER_NOTA XAException问题的解决
在weblogic执行XA操作的时候,我们会碰到如下的错误,后来发现是JDBC配置的问题.主要报错:java.sql.SQLException: XA error: XAER_NOTA : The X ...
- 爬虫之多线程 多进程 自定义异步IO框架
什么是进程? 进程是程序运行的实例,是系统进行资源分配和调度的一个独立单位,它包括独立的地址空间,资源以及1个或多个线程. 什么是线程? 线程可以看成是轻量级的进程,是CPU调度和分派的基本单位. 进 ...
- python中常用的推导(字典推导和列表推导)
在python开发中经常需要书写这样的代码 result = list() for data in datas: if data not in ['a', 'b']: result.append(da ...
- 电子商务ICP经营许可证申请条件
电子商务ICP经营许可证申请条件:注册资金100万的纯内资公司:服务器在本地:域名备案以公司名义备案:申请条件:1.公司营业执照副本复印件需清晰有效,并已完成该年度年检事宜,特别注意营业执照的有效期要 ...
- JVM基础(1)——内存模型
转载:http://blog.csdn.net/weitry/article/details/53264262 系列文章规划: JVM基础(1)——内存模型 JVM基础(2)——内存管理 JVM基础( ...