观察者(设计模式)、事件总线(greenroboto)、LiveData(Android)有什么区别?

What is the difference between observer(design pattern), eventbus(greenroboto), LiveData(Android)?

我分不清要用什么。 似乎都以相同但不同的方式工作,但基本逻辑相同,请告诉我主要区别是什么?

EventBus 只是某种工具,在编写时考虑了 Observer-like 情况。 EventBus 的一般用法是 触发事件 所以我们可以使用观察者这个词来适应它。观察者模式使用事件或消息通知变化 感兴趣的对象关于被观察(改变)的对象。

并且 EventBus 也是 不是观察者 模式,因为如果你有 N 个对象并且你想在所有对象之间进行通信,你需要 N*N 个观察者,如果你使用观察者模式,但只有一个全局 EventBus 足以完成相同的工作。

所以 EventBus 是 EventBus-pattern。


并且LiveData也被认为是一个可观察的数据持有者class,在观察者模式中使用。与常规 Observable 不同,LiveDatalifecycle-aware,这意味着它尊重其他应用组件的生命周期,例如活动、片段或服务。

所以LiveData是Android的观察者模式,或者可以认为是单独的LiveData-pattern。