美文网首页
6. 命令模式

6. 命令模式

作者: bit_拳倾天下 | 来源:发表于2021-03-04 15:06 被阅读0次

程序中可能会遇到某处代码,需要一系列判断,来决定执行哪个方法,判断和执行的逻辑又有可能随着业务逻辑改变,从而变得难以维护。命令模式来了,它不仅可以封装调用,甚至还能实现“撤销”。

什么是命令模式?

将“请求”封装成对象,以便使用不同的请求、队列或者日志来参数化其他对象。这种模式还支持可撤销的操作。

例子: 调用者与执行者

在例子中,调用者依赖执行者对象,两者耦合在一起了。而且弹性小,当业务改变时,就得修改调用者代码;而且如果 executer 类型变了,甚至可能原来的 methodA 等方法都没有了,还是要改调用者代码。

所以可以把这部分代码抽取出来,放到 Command 接口中(执行者对象根据需求决定是否需要封装在 Command 实现类中),专门负责方法调用,然后又实现类区具体实现。 命令
然后,执行者方法中依赖 Command 对象,原来方法调用的部分,用 Commond 的 execute() 替换。 新的调用者

这样一来,调用者就和执行者解耦了,调用者不用关心执行者有哪些方法,怎么执行,他只要调用 command.execute() 。

另外,在上图例子中 ① 标注的位置,使用的 是 Command 对象,根据出入不同的 Command 实现类对象,就可以定义不同的操作。其实这里很灵活的,可以换成数组、集合、队列甚至是记录文件,这样可以报需要执行的命令都保存下来,什么时候执行,按照什么顺序执行都是可控的。我们还可以再加一个属性(对象、数组、集合、队列、记录文件等),用来存储撤销命令的,在必要时候,调用 undo() 即可完成撤销。这样一来,调用者就有了较高的弹性。

典型应用

日志系统:将命令记录在日志中,一旦系统崩了,可以根据日志文件记录的命令进行恢复。
事务管理:一旦事务中未能完整完成,即可根据记录的命令进行撤销。

相关文章

  • 6. 命令模式

    程序中可能会遇到某处代码,需要一系列判断,来决定执行哪个方法,判断和执行的逻辑又有可能随着业务逻辑改变,从而变得难...

  • Java设计模式

    1.策略模式 2.观察者模式 3.装饰者模式 4.工厂模式 5.单件模式 6.命令模式 7.适配器模式与外观模式 ...

  • python设计模式(持续更新)

    1.抽象工厂模式 2. 适配器模式 3.共享模式 4.桥接模式 5.建造者模式 6.职责链模式 7.命令模式 8....

  • JavaScript 设计模式(中)——6.命令模式

    6 命令模式 6.1 命令模式的用途 命令模式的命令指的是一个执行某些特定事情的指令; 命令模式的应用场景:有时候...

  • 12.vim的使用技巧

    命令模式 、命令行模式、编辑模式: INSERT 首次进入文件: 命令模式输入: 表示 命令行模式出现...

  • 五、Linux vim编辑器

    vim编辑器三种模式:命令模式、编辑模式、末行模式 1.命令模式: vim进入文件后就是命令模式 1.1 命令模式...

  • 终端操作文件

    VIM 模式切换从命令模式->编辑模式:i,a,o,I,A,O从编辑模式->命令模式:ESC从命令模式->末行模式...

  • vim 操作 && Mac 配置本地Apache

    一、vim 的基本命令操作 vim 的模式: 编辑模式 ,命令模式 编辑模式: 命令模式:可以通过命令 最重要的命...

  • Vim高效编辑器

    Vim程序员高效编辑器 命令模式,输入模式,底线命令模式 默认进入vim就是命令模式,输入i变为输入模式 命令模式...

  • Command模式

    命令模式(Command) 命令模式属于对象的行为模式。命令模式又称为行动(Action)模式或交易(Tran...

网友评论

      本文标题:6. 命令模式

      本文链接:https://www.haomeiwen.com/subject/khwhqltx.html