JS设计模式之订阅发布模式

JavaScript030

JS设计模式之订阅发布模式,第1张

参考我的印象笔记

下面稍微解释一下这个图(框架源码整个过程比较复杂,如果现在看不懂下面几段也没关系,大致了解一下即可)。

我们可以看看 Vue 的源码:

3、发布-订阅模式的优缺点

发布-订阅模式最大的优点就是解耦:

发布-订阅模式也有缺点:

发布-订阅模式和观察者模式

观察者模式与发布-订阅者模式,在平时你可以认为他们是一个东西,但是某些场合(比如面试)下可能需要稍加注意,借用网上一张流行的图:

区别主要在发布-订阅模式中间的这个 Event Channel:

发布-订阅模式和责任链模式

发布-订阅模式和责任链模式也有点类似,主要区别在于:

1、 单例模式

单例模式就是一个实例,在整个网页的生命周期里只创建一次,后续再调用实例创建函数的时候,返回的仍是之前创建的实例。在实际开发中应用十分广泛,例如页面中的登录框,显示消息的提示框。

2、策略模式

策略模式是指将策略(算法)封装起来,策略的目的是将算法和使用分离开。

3、代理模式

代理模式很好理解,我们不能直接使用目标函数,而是通过调用代理函数来实现对目标函数的使用。

4、发布订阅者模式

发布订阅模式在实际应用中非常常见,例如,我们在微信App上关注了某个公众号,当该公众号有新文章发布时,就会通知我们。

发布订阅模式定义四了一种一对多的依赖关系,当“一”发生变化,通知多个依赖。

5、命令模式

所谓命令模式就是将要执行的业务逻辑封装到一个函数或类中,不需要具体谁来执行该命令。

观察者模式主要应用于对象之间一对多的依赖关系,当一个对象发生改变时,多个对该对象有依赖的其他对象也会跟着做出相应改变,这就非常适合用观察者模式来实现。使用观察者模式可以根据需要增加或删除对象,解决一对多对象间的耦合关系,使程序更易于扩展和维护。

基础知识:

观察者模式定义了对象间的一种一对多依赖关系,每当一个对象发生改变时,其相关依赖对象皆得到通知并被进行相应的改变。观察者模式又叫做发布-订阅模式。生活中有很多类似的关系,比如微信公众号订阅,多个读者订阅一个微信公众号,一旦公众号有更新,多个读者都会收到更新,而这种情况在应用程序中也非常常见,js绑定各种事件本质上就是观察者模式的实现。

观察者模式是一个非常有用的设计模式,它主要有两个角色组成:

(1)目标对象:作为一对多关系中的一,可以用来管理观察者的增加和删除。

(2)观察者对象:观察目标对象,一旦目标发生改变则做出相应的反应。

更多详解查看:网页链接,希望可以帮到你