将一个请求封装成一个对象,可以将不同的请求参数化,可以对请求就行排队、日志记录以及撤销等操作。
应用场景
-
当需要将各种执行的动作抽象出来,使用时通过不同的参数来决定执行哪个对象
-
在不同的时刻,指定和排列请求。
-
需要支持撤销操作。
-
需要支持日志功能,这样当系统崩溃时,可以重做一遍。
-
需要支持事务操作。
-
请求调用者需要与请求接收者解耦时,命令模式可以使调用者和接收者不直接交互。
-
系统随机请求命令或经常增加、删除命令时,命令模式可以方便地实现这些功能。
-
当系统需要执行一组操作时,命令模式可以定义宏命令来实现该功能。
-
当系统需要支持命令的撤销(Undo)操作和恢复(Redo)操作时,可以将命令对象存储起来,采用备忘录模式来实现。
优点
-
将调用操作与具体执行者解耦
-
添加一个命令非常容易
-
很容易实现序列操作及实现回调系统