应用情景
有时候需要向某些对象发送请求,但是并不知道请求的接收者是谁,也不知道被请求的操作是什么。
此时希望用一种松耦合的方式设计软件,使得请求发送者和请求接收者能够消除彼此之间的耦合关系
主要思想
将命令接收者的具体执行函数存入 命令堆栈,命令发起者需要执行/撤销动作时,对堆栈进行处理
命令接收者可以以闭包形式被执行,也可以作为对象属性被执行到
1 | //闭包形式 |
与策略区别
策略模式指向问题域更小,所有策略对象目标一致,他们只是达到这个目的的不同手段,内部实现针对‘算法’
命令对象解决的目标更具发散性,还可以完成撤销,排队等功能