1 前言
在面向对象中,把指令封装在各种命令对象中。命令对象可以被传递而且在指定时刻被不同的客户端复用。这一概念精心设计而来的设计模式叫做命令(Command)模式。
2 详述
2.1 简述
命令对象封装了如何对目标执行指令的信息,因此客户端或调用者不必了解目标的任何细节,却仍可以对他执行任何已有的操作。通过把请求封装成对象,客户端可以把它参数化并置入对类或日志中,也能够支持可撤销的操作。命令对象将一个或多个动作绑定到特定的接收器。命令模式消除了作为对象的动作和执行它的接收器之间的绑定。
将请求封装为一个对象,从而可用不同的请求对客户进行参数化,对请求排队或记录请求日志,以及支持可撤销的操作。
2.2 何时使用
(1)想让应用程序支持撤销与恢复;
(2)想要对象参数化一个动作以执行操作,并用不同命令对象来代替回调函数;
(3)想要在不同时刻对请求进行指定,排列和执行;
(4)想记录修改日志,这样在系统故障时,这些修改可在后来重做一遍;
(5)想让系统支持事务,失误封装了对数据的一系列修改。事务可以建模为命令对象。
3 结语
消除应用程序中命令,调用器,接收器和客户端的耦合,其好处显而易见。如果特定的命令需要在现实中修改,那么其他组件中得大部分都不受影响。而且添加新的命令类非常容易,因为不必为此修改已有的类。
以上是所有内容,希望对大家有所帮助。