一、观察者模式:在软件开发设计中是一个对象(subject),维护一系列依赖他的对象(observer),当任何状态发生改变自动通知他们。强依赖关系 简单理解:数据发生改变时,对应的处理函数就会自动执行。一个Subjet,用来维护Observers,为某些event来通知(notify)观察者
二、发布-订阅者 有一个信息中介,过滤 耦合性低 它定义了一种一对多的关系,可以使多个观察者对象对一个主题对象进行监听,当这个主题对象发生改变时,依赖的所有对象都会被通知到。
- -两者的区别: 1.观察者模式中,观察者知道Subject ,两者是相关联的,而发发布订阅者只有通过信息代理进行通信 2.在发布订阅模式中,组件式松散耦合的。正好和观察者模式相反。 3.观察者大部分是同步的,比如事件的触发。Subject就会调用观察者的方法。而发布订阅者大多数是异步的() 4.观察者模式需要在单个应用程序地址空间中实现,而发布订阅者更像交叉应用模式。