【问题标题】:Observer pattern with immediately notify立即通知的观察者模式
【发布时间】:2018-02-12 12:31:08
【问题描述】:

我有一个 API,它会在其内部数据更改时公开一些事件。当有人想观察数据变化时,它会附加一个事件回调,当数据内部发生变化时 API 会通知它。

当状态改变并且有人初始化需要知道当前 API 状态并收到更改通知的代码时,需要附加事件侦听器并且需要在 API 上调用一些 getter 来获取当前状态。

我正在考虑做这样的事情:当您附加一个侦听器,并且在 API 中已经知道状态时,立即使用当前状态调用附加的回调,然后在状态发生变化时调用。

但问题是我找不到适合这种行为的设计模式。它看起来像一个观察者,但发生了变异 - 如果有任何需要通知的信息,它会在监听器附加后立即通知。

如果它有任何意义或一般来说它是一种反模式,请指导我,我应该始终使用初始 getter 来获取当前状态并为未来状态更改“更改”事件。

【问题讨论】:

    标签: design-patterns observer-pattern


    【解决方案1】:

    我认为您所描述的不是不同的模式,即使它不是您的手册观察者示例。我认为它仍然有资格作为一个普通的观察者。只是它会在两种状态更改时发出通知:当数据更改时,以及当侦听器更改时(添加了新侦听器)。毕竟订阅的观察者是可观察对象状态的一部分。

    我在这里看到的唯一缺点是,当有人订阅您的 observable 时,他们可能不会期望立即收到通知。但这应该不是什么大问题,因为不能保证在订阅后 1 毫秒内数据不会改变。此外,不向他们提供直接访问数据的方式可能会阻止他们在订阅之前/之后进行不必要的调用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-11
      • 2021-05-08
      • 1970-01-01
      相关资源
      最近更新 更多