将IObserver分配给多个IObservable实例

时间:2015-02-10 12:54:57

标签: c# .net observer-pattern

  

虽然可以将观察者附加到多个提供者,但建议的模式是将IObserver实例附加到仅一个IObservable实例。

取自Observer Design Pattern Best Practices

我没有看到任何明显的理由为什么建议只为一个观察者指派观察者。事实上,我想做到这一点,不断刷新一个取决于多个变化值的统计数据。

在我看来,msdn建议我为我想要观察的每个值创建一个专用观察者类的实例,而我的直觉是将我的统计类直接分配给IObservables。

"适当的"实现这个的方法以及我不应该将我的类分配给多个observable的原因是什么?

1 个答案:

答案 0 :(得分:1)

据我所知,这种“最佳做法”没有充分的理由。

我只能看到一个您可能想要这样做的场景,但这并不构成将其称为“最佳实践”的理由。

假设您需要知道发出通知的observable是谁,并假设observable未通过value OnNext()参数识别自身。然后,您必须为每个observable实例化一个不同的观察者,并将observable作为构造函数参数传递给观察者(* 1)。

在您的情况下,您不需要知道发出通知的观察者是谁,因此这种情况不适用于您。

(* 1)事实上,正是为了避免必须实例化不必要的观察者,许多框架要求任何通知都应该包含对通知发起者的引用。