前言
分析
现实生活
相同的开关
可以通过不同的电线
来控制不同的电器
开关←→请求发送者
电灯←→请求的最终接收者和处理者
开关和电灯之间并不存在直接耦合关系,它们通过电线连接在一起,使用不同的电线可以连接不同的请求接收者
1.命令模式概述
软件开发
按钮←→请求发送者
事件处理类←→请求的最终接收者和处理者
发送者与接收者之间引入了新的命令对象
(类似电线),将发送者的请求封装在命令对象中,再通过命令对象来调用接收者的方法
相同的按钮
可以对应不同的事件处理类
将请求发送者和接收者完全解耦
发送者与接收者之间没有直接引用关系
发送请求的对象只需要知道如何发送请求,而不必知道如何完成请求
2.命令模式的定义
命令模式:将一个请求封装为一个对象,从而让你可以用不同的请求对客户进行参数化
,对请求排队
或者记录请求日志
,以及支持可撤销的操作
3.命令模式的结构
命令模式包含以下4个角色
Command(抽象命令类)
ConcreteCommand(具体命令类)
Invoker(调用者)
Receiver(接收者)
命令模式的本质是对请求进行封装
一个请求对应于一个命令,将发出命令的责任和执行命令的责任分开
命令模式允许请求的一方和接收的一方独立开来,
使得请求的一方不必知道接收请求的一方的接口
,更不必知道请求如何被接收、操作是否被执行、何时被执行,以及是怎么被执行的