观察者模式和发布订阅模式二者工作原理&区别
什么是耦合 ?
耦合
模块与模块之间很多是存在关联的,如果改动一个,
其他若干模块都会发生改变,模块之间的关系越是紧密,
独立性就越不好。(这种关系,我们称作: 耦合度)
// 耦合性也称块间联系
耦合指的是两个类之间的联系的紧密程度;
强耦合:类之间存在着直接关系
弱耦合:在两个类的中间加入一层,将原来的直接关系变成间接关系,
使得两个类对中间层是强耦合,两类之间变为弱耦合
*模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息*
内聚: 模块内部的代码,相互之间的联系越强,内聚就越高
内聚是从功能角度来度量模块内的联系,
一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系
*模块内部的代码,相互之间的联系越强,内聚就越高*
从图中可以看出,
观察者模式中: 观察者和目标直接进行交互
发布订阅模式中: 统一由调度中心进行处理,
订阅者和发布者互不干扰
什么是设计模式?
设计模式(Design pattern) 是解决软件开发某些特定问题而提出的一些解决方案也可以理解成解决问题的一些思路。通过设计模式可以帮助我们增强代码的可重用性、可扩充性、 可维护性、灵活性好。我们使用设计模式最终的目的是实现代码的 高内聚 和 低耦合。
二者工作原理&区别
观察者模式
如同实验进行的过程一般,观察者和被观察者(目标)是紧耦合的,如果目标一旦触发了事件,观察者就会立刻作出响应的举措。
发布订阅模式
发布者和订阅者二者之间存在一个中介,有点类似于你去app订阅喜欢的漫画一样,当漫画大大赶工出了新的一话并发布在了app上,app就会通知你:快来看漫画啦!
漫画大大和小贾之间是没有互动的,即发布者和订阅者之间是松耦合的。
区别
发布订阅模式比观察者模式多了一个调度中心;这个调度中心实现了解耦,
且可以实现更细粒度的一些控制。(进行权限控制和节流操作)
发布订阅模式比观察者模式多了一个调度中心;这个调度中心实现了解耦,且可以实现更细粒度的一些控制。(进行权限控制和节流操作)
观察者模式大多数时候是同步的,而发布-订阅模式大多数时候是异步的(使用消息队列)
链接: 借鉴于.