将一个请求封装成一个对象,从而使你可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作
涉及到的角色
1> 命令角色:声明执行操作的接口,有Java接口或者抽象类来实现
2> 具体命令角色:将一个接收者对象绑定于一个动作,调用接收者相应的操作,以实现命令角色声明的执行操作的借口
3> 客户角色:创建一个具体命令对象(并可以设定它的接收者)
4> 请求者角色:调用命令对象执行这个请求
5> 接收者角色:知道如何实施与执行一个请求相关的操作
优点
1> 命令模式将调用操作的请求对象与知道如何实现该操作的接收对象解耦
2> 具体命令角色可以被不同的请求者角色重用
3> 可以将多个命令装配成一个复合命令
4> 增加新的具体命令角色很容易,因为无需改变已有的类