一、简单介绍
命令模式中的命令指的是一个执行某些特定事情的指令。,即将如果你需要做一件事,你就给一个命令对象发送一个指令,由这个对象负责下发你的指令。你不需要了解你的请求由谁完成,也不知道被请求的具体操作。所以命令模式是一种松耦合的方式。
二、使用场景
命令模式最常见的使用场景,是我们平时发送请求。每一次请求都是一次命令。 在之前介绍代理模式的时候,我们用了一个防抖的处理,优化了频繁发送请求的场景。但是有另外一些场景,频繁触发,但是每一次请求都不能忽略,并且每次请求的结果是前后依赖的。,前的防抖就不适用了。这时,我们需要一个任务队列,在上一个任务执行完成之后,才执行下一个任务。
这和浏览器的事件循环很像,但还是有略微的差别。。
在另外一些场景中,我们执行一次命令,后续的操作是经常变化的。那么我们就可以通过命令模式去方便的修改每次命令需要执行的操作。
三、示例
以下是个简单的示例。我们构建一个命令对象,外界只需要调用这个对象,执行一次命令。具体执行什么命令,则在这个命令对象中注册。实例化command对象之后,也可以修改或者新增对应的方法。还可以给command对象添加一个实例属性,对应执行的命令。每一种命令对应一个command对象。
class Command {
constructor() {
this.eventList = [];
}
doAction() {
this.doEvent();
}
doEvent() {
this.eventList
.map(item => {
return new Promise(res => {