设计模式-命令模式定义的理解

命令模式的定义:

将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。

如何理解这里"使用不同的请求、队列或者日志来参数化其他对象"这句话?什么叫参数化其他对象?

请求、队列或者日志这里是3中运用场景。这“定义”不是原版的定义,而是一个自己概念没搞清楚的学生自己总结的吧。

  1. 参数化“其他对象”是命令模式可以实现的效果。刘伟的《设计模式的艺术》中使用java语言举的例子,是程序可以读取xml中具体命令的类名,实现注入的过程。通过一个xml文件,可以向命令调用者注入具体命令。所以,这里的其他对象,指的是命令调用者。因为调用者执行的命令不同,表现就不同。站在软件使用者的角度,a)我可以通过制定xml的参数,使得软件中不同对象执各自的功能。b)我可以通过修改xml的参数,同一个按键的表现就不一样。

  2. 请求、队列和日志是三种实现命令方式的方式,这三种情况所达到的效果是不同的。
    a)请求方式是单个请求,实现了最基本的命令模式,这种情况下,命令调用者只能执行当前注入的单个指令,即一次调用,只有对应一个的命令接收者。
    b)队列方式是指命令调用维护的不再是单个队列,而是一个消息队列。命令调用时,队列中所有的命令的都会执行。即一个发送者,对应多个接收者。
    c)日志模式,就是加了一层文件。命令对象先写入文件,命令调用者从文件中取命令执行。这样的话,所有的操作都有迹可循,可以用作数据恢复。