定义
- 将一个请求封装成一个对象,从而让用户使用不同的请求将客户端参数化
- 对请求排列或者记录请求日志,以及支持撤销操作。
应用场景
当需要将方法调用包装成一个对象,以延时方法调用,或者让其他组件在对其内部实现细节不了解的情况下进行调用的时候,可以使用命令模式;
- 场景一:应用支持撤销和恢复;
- 场景二:记录请求日志,当系统故障这些命令可以重新被执行;
- 场景三:想用对象参数化一个动作以执行操作,并且用不同命令对象来替换回调函数;
角色划分:(四个角色)
- 角色一:接受者
- 角色二:命令接口
- 角色三:具体命令
- 角色四:请求者
角色之间的关联
- 具体命令是命令接口的实现;
- 请求者持有每一个命令接口的引用;
- 每一条具体的命令都持有接受者的引用
原始案例:俄罗斯方块
- 角色一:接受者(TetrisMachine)
- 角色二:命令接口(TMCommondProtocol)
- 角色三:具体命令(TMLeftCommond, TMRightCommond, TMTransfomCommond)
- 角色四:请求者(TMCommondManager)
网友评论