定义 将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能
类图
优点
1. 类间解耦 调用者Invoker与接受者receiver之间没任何依赖关系,调用者不需要了解到底哪个接收者执行
2. 可扩展性 command子类可非常容易的扩展
3. 命令模式结合其他模式会更优秀 如结合责任链模式,模板方法模式
缺点
N个命令,N个Command,容易造成类膨胀
使用场景
GUI中,按钮点击;触发-反馈机制
扩展
实际设计中,可以选择减少Client类和Receiver类的依赖关系