数据结构+算法=程序
程序+设计模式=软件

0%

命令模式(Command)

官方定义

将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。命令模式也支持可撤销的操作。

分类

行为型模式

思想

将实际的执行代码包装起来,封装成命令,使得调用者不用关心具体的实现细节,他只需要将这些命令组合起来使用,或者撤销某个命令。一般采用这种设计模式,接口都要求实现撤销操作。

UML类图

实现

  1. 首先定义Command接口,该接口定义2个方法,执行和撤销执行;

  2. ConcreteCommand是具体的命令实现类,该类型接收Receiver对象,相当于对实际操作的封装,它的执行和撤销方法都是对Receiver的直接操作,使Invoker和Receiver彻底解耦;

  3. Client负责将具体命令ConcreteCommand和Receiver关联起来;

  4. Invoker负责对Command类型进行组合和调用,如果把Command比作一个按键,每个按键触发一系列操作,那么Invoker可当作是按键组合的遥控器,它无须关心具体的实现,只需关注将哪些按键组合起来以及何时该触发某个按键。