目的 | 将一个请求封装成对象,这样,发出请求和执行请求就成为了独立的操作;可以进行请求到鹅排队、撤销操作,记录日志请求 |
应用场景 | (1)在不同时刻指定、排队请求 (2)抽象需要做的事件,以用作对象的参数 (3)支持撤销、重做等命令操作时 (4)可修改日志、并为系统崩溃的数据更新做准备时 |
构成 | 抽象命令、具体命令、接收者、调用者 |
备注 | 餐厅用餐,客人向厨师发送订餐请求,但由于不知道厨师姓名,点餐就会变得非常困难,使用命令模式,就把订餐请求封装成订单对象,就可以通过服务员传递到厨师受众。 命令模式下,客人不需要知道厨师姓名就能点单,使得发出请求和执行请求成为了独立的操作 |
命令模式由抽象命令、具体命令、接收者、调用者等角色组成。
(1)抽象命令:声明执行命令的接口,拥有执行命令的抽象方法
(2)具体命令:抽象命令类的具体实现。它拥有接收者对象,调用接收者的操作方法实现
(3)接收者:知道如何执行请求相关的操作
(4)调用者:请求的发送者,通过各种命令访问命令对象来执行相关请求,但不直接访问接收者