参考我的印象笔记
下面稍微解释一下这个图(框架源码整个过程比较复杂,如果现在看不懂下面几段也没关系,大致了解一下即可)。
我们可以看看 Vue 的源码:
3、发布-订阅模式的优缺点
发布-订阅模式最大的优点就是解耦:
发布-订阅模式也有缺点:
发布-订阅模式和观察者模式
观察者模式与发布-订阅者模式,在平时你可以认为他们是一个东西,但是某些场合(比如面试)下可能需要稍加注意,借用网上一张流行的图:
区别主要在发布-订阅模式中间的这个 Event Channel:
发布-订阅模式和责任链模式
发布-订阅模式和责任链模式也有点类似,主要区别在于:
1、 单例模式
单例模式就是一个实例,在整个网页的生命周期里只创建一次,后续再调用实例创建函数的时候,返回的仍是之前创建的实例。在实际开发中应用十分广泛,例如页面中的登录框,显示消息的提示框。
2、策略模式
策略模式是指将策略(算法)封装起来,策略的目的是将算法和使用分离开。
3、代理模式
代理模式很好理解,我们不能直接使用目标函数,而是通过调用代理函数来实现对目标函数的使用。
4、发布订阅者模式
发布订阅模式在实际应用中非常常见,例如,我们在微信App上关注了某个公众号,当该公众号有新文章发布时,就会通知我们。
发布订阅模式定义四了一种一对多的依赖关系,当“一”发生变化,通知多个依赖。
5、命令模式
所谓命令模式就是将要执行的业务逻辑封装到一个函数或类中,不需要具体谁来执行该命令。
Node.js 的中发布/订阅模式,一般用于解决一次发布对应多次订阅的情况。但在实际业务场景中,可能会存在多个发布对应一次订阅的情况,也就是多个有关联的异步任务之间的协作。比如有 A、B、C 三个任务。当它们都执行完毕之后,再执行一个最终的任务。下面我们通过一个简单的例子,来实现多异步协作的功能: