命令模式
解耦:通过命令对象解耦,而不是直接操作想要操作的对象。
这样的好处就是在修改被操作的对象的方法的时候,只需修改中间的调用者这一个地方,而不是把之前的所有的调用者都修改一遍
增加命令的时候只需增加命令类即可,命令类就是对编辑器操作的包装,基础功能早就在上面写好了。命令类就是起到了解耦,增加命令(组合命令)方便
将请求转换为一个包含与请求相关的所有信息的独立对象。 该转换让你能根据不同的请求将方法参数化、 延迟请求执行或将其放入队列中, 且能实现可撤销操作。
- 命令模式适合用在需要将请求调用者和请求的执行者进行解耦的场景。
- 需要请求的撤销操作时也是可以使用命令模式的。
1.优点:命令模式可以将请求的调用者和请求的执行者进行解耦。(调用者可能是键盘鼠标一个按钮,他们都要和receiver对线)
2.缺点:命令模式因为需要将命令封装成对象,所以每有一个命令就需要创建一个对象,这样造成命令对象这些小类特别多。

编辑器设计

有些命令会改变编辑器的状态 (例如剪切和粘贴),很多操作对应的是同一个命令,所以直接封装为对象,调用对象就好,而不是直接操作Editor,不然的话Editor有个方法需要修改的时候,所有的调用这个命令的Invoker都需要修改。现在使用命令对象,修改了编辑器只需修改一下命令对象调用的方法即可
它们可在执行相关操作前对编辑器的状态进行备份。 命令执行后会和当前点备份的编辑器状态一起被放入命令历史 (命令对象栈)。 此后, 如果用户需要进行回滚操作, 程序可从历史记录中取出最近的命令, 读取相应的编辑器状态备份, 然后进行恢复。
客户端代码 (GUI 元素和命令历史等) 没有和具体命令类相耦合, 因为它通过命令接口来使用命令。 这使得你能在无需修改已有代码的情况下在程序中增加新的命令。
posted on 2025-10-14 23:06 chuchengzhi 阅读(8) 评论(0) 收藏 举报
浙公网安备 33010602011771号