命令模式(Command Pattern)又称为行动(Action)模式或交易(Transaction)模式。
命令模式的英文定义是:
Encapsulate a request as an object, thereby letting you parameterize clients with different requests, queue or log requests, and support undoable operations.
意思是:将一个请求封装成一个对象,从而让你使用不同的请求把客户端参数化,对请求排队或者记录请求日志,可以提供命令的撤销和恢复功能。
简单来说,命令模式就是将发送者、接收者和调用命令封装成对象,客户端调用的时候可以选择不同的对象,从而实现发送者和接收者的完全解耦。
命令模式包含如下角色:
角色关系类图如下:
3.1 接收者
3.2 命令对象
3.3 请求者
3.4 客户端
通过代码我们可以看到,命令模式把一条命令分为四步,先定义接收者,再创建执行命令对象,再创建请求者,最后执行命令方法。它的耦合度要比把所有的操作都封装到一个类中要低的多,而这也正是命令模式的精髓所在:把命令的调用者与执行者分开,使双方不必关心对方是如何操作的。
命令模式的优点:
命令模式的缺点:
命令模式的典型应用场景如下:
以生活中的看电视为例,其中遥控器就是命令发送者,电视就是请求接收者,分别对应:开机、关机、切换频道三个命令,实现代码如下。
6.1 定义遥控功能(命令接口和实现类)
6.2 接收者(执行命令)
6.3 执行者(发起执行命令对象)
6.4 客户端(调用)
命令模式是通过封装命令类来实现解耦调用者(发送命令)和接收者(执行命令),它的优点是可扩展性好,缺点是需要为不同的命令需要制定单独的命令类。你还知道哪些命令模式在生活中的例子呢?
若将上面代码改为使用循环的方式,又该如何修改呢?大家可以思考一下。
版权声明:
本文来源网络,所有图片文章版权属于原作者,如有侵权,联系删除。
本文网址:https://www.mushiming.com/mjsbk/13992.html