将一个请求封装为一个对象,从而让我们可用不同的请求对客户进行参数化;对请求排队或者记录请求日志,以及支持可撤销的操作。其别名为动作(Action)模式或事务(Transaction)模式。
结构图
角色与理解
- 命令模式包含如下角色:
- Command(抽象命令类):所有具体命令类的父类,一般定义为抽象类或者接口,声明执行请求的execute()方法等。
- Concrete Command(具体命令类):继承抽象命令类,持有接收者的引用,在execute()等方法中调用接收者的方法已完成业务的处理。
- Invoker(调用者):调用者即请求发送者,通过命令对象执行请求
- Receiver(接收者):请求的最终执行者
- 具体命令类对接收者进行封装,抽象命令类对具体命令类进行抽象,客户端面向抽象命令类编程
- 这里调用者角色的作用是对调用抽象命令类之前和之后做一些事情,而是命令类职责更加的单一
核心代码