1.命令模式的定义与特点
命令(Command)模式的定义如下:将一个请求封装为一个对象,使发出请求的责任和执行请求的责任分割开。这样两者之间通过命令对象进行沟通,这样方便将命令对象进行储存、传递、调用、增加与管理。
我的理解:命令模式主要是消除请求发送者和请求接收者的耦合。请求发送者主要负责发送命令,请求接受者主要负责执行命令,因此命令就是两者的中间桥梁。
eg.人使用遥控器开灯和关灯的操作:遥控器是发送者,灯是接受者,开灯和关灯是具体命令。
具体执行步骤是:
2.命令模式的结构
命令模式包含以下主要角色:
抽象命令类(Command)角色:声明执行命令的接口,拥有执行命令的抽象方法 execute()。
具体命令角色(Concrete Command)角色:是抽象命令类的具体实现类,它拥有接收者对象,并通过调用接收者的功能来完成命令要执行的操作。
实现者/接收者(Receiver)角色:执行命令功能的相关操作,是具体命令对象业务的真正实现者。
调用者/请求者(Invoker)角色:是请求的发送者,它通常拥有很多的命令对象,并通过访问命令对象来执行相关请求,它不直接访问接收者。
通俗易懂的理解:将军发布命令,士兵去执行。其中有几个角色:将军(命令发布者)、士兵(命令的具体执行者)、命令(连接将军和士兵)。Invoker是调用者(将军),Receiver是被调用者(士兵),ConcreteCommand是命令,实现了Command接口,持有接收对象。
参考:
尚硅谷-图解Java设计模式(韩顺平)
命令模式(详解版)
如有错误,欢迎指正