观察者(设计模式)、事件总线(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 不同,LiveData
是 lifecycle-aware,这意味着它尊重其他应用组件的生命周期,例如活动、片段或服务。
所以LiveData
是Android的观察者模式,或者可以认为是单独的LiveData-pattern。
我分不清要用什么。 似乎都以相同但不同的方式工作,但基本逻辑相同,请告诉我主要区别是什么?
EventBus
只是某种工具,在编写时考虑了 Observer-like 情况。 EventBus
的一般用法是 触发事件 所以我们可以使用观察者这个词来适应它。观察者模式使用事件或消息通知变化 感兴趣的对象关于被观察(改变)的对象。
并且 EventBus
也是 不是观察者 模式,因为如果你有 N 个对象并且你想在所有对象之间进行通信,你需要 N*N 个观察者,如果你使用观察者模式,但只有一个全局 EventBus
足以完成相同的工作。
所以 EventBus
是 EventBus-pattern。
并且LiveData
也被认为是一个可观察的数据持有者class,在观察者模式中使用。与常规 Observable 不同,LiveData
是 lifecycle-aware,这意味着它尊重其他应用组件的生命周期,例如活动、片段或服务。
所以LiveData
是Android的观察者模式,或者可以认为是单独的LiveData-pattern。