观察者模式:同一个实例多次注册的情况

Observer pattern: case of multiple registration of the same instance

我在研究观察者,一种设计模式

observable 对象包含一个观察者列表。列表可以接受冗余的观察者实例。所以我们可以使用哈希集而不是列表来限制这种冗余。

我的问题是,如果我们允许重复注册同一个观察者实例,有没有多次注册观察者的例子?为什么同一个观察者多次注册到同一个观察者?

一个可观察对象可能会产生几种不同类型的事件通知。一位观察员可能有兴趣注册其中的一些通知。显然,您可以用不同的方式设计这个场景;但一种方法是将所有注册维护在一个列表中。

GoF 在第 296 页提到,

It's up to the observer to handle or ignore a notification.

这意味着观察者需要意识到任何潜在的冗余并做出适当的反应。