观察者模式,立即通知

时间:2018-02-12 12:31:09

标签: design-patterns observer-pattern

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

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

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

但问题是我找不到适合这种行为的设计模式。它似乎是一个观察者但是发生了变异 - 如果有什么可以通知的话,它会在听众附加后立即通知。

请指导我,如果它有任何意义或一般的反模式,我应该总是使用初始吸气剂来获得当前状态和"更改"未来状态变化的事件。

1 个答案:

答案 0 :(得分:0)

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

我在这里看到的唯一缺点是,当有人订阅您的观察时,他们可能不会立即收到通知。但这不应该是一个大问题,因为无法保证数据在订阅后的1毫秒内无法改变。同样没有为他们提供直接访问数据的方法可以防止他们在订阅之前/之后进行不必要的调用。