我正在研究观察者,一种设计模式。
可观察对象包含观察者列表。列表可以接受多余的观察者实例。因此,我们可以使用哈希集而不是列表来限制这种冗余。
我的问题是,如果我们允许同一观察者实例的冗余注册,是否有任何示例表明该观察者被多次注册?为什么同一观察者多次注册到同一可观察者?
一个可观察的对象可能会产生几种不同类型的事件通知。一个观察者可能有兴趣注册许多这些通知。显然,您可以采用不同的方式设计此方案;但是一种方法是将所有注册信息保存在一个列表中。
GoF确实在第296页提到过,
由观察者处理或忽略通知。
这意味着观察者需要意识到任何可能的冗余并做出适当的反应。