尽管可以将观察者附加到多个提供者,但推荐的模式是仅将
IObserver
实例附加到一个IObservable
实例。将IObserver分配给多个IObservable实例
取自Observer Design Pattern Best Practices。
我没有看到任何明显的理由,为什么建议只将观察者分配给一个observable。事实上,我想要做的就是不断刷新一个取决于多个变化值的统计量。
在我看来,像MSDN建议我创建一个专门的观察员类的实例,我想观察每一个值,而我的直觉是让我的统计类直接分配给IObservables。
什么是“正确”的方式来实现这个,以及为什么我不应该把我的类分配给多个observables的原因是什么?
如果你有一个观察者,观察多个observable,你的数据可能会失去同步。那将是我的第一个想法,在你不关心的情况下,那么这不会是一个问题。当你无法真正从数据集中区分出来时,你如何做出你该做什么的决定。其次,线程如何实现,这可能会导致问题吗? – 2015-02-10 13:00:03
我认为这是一个很好的问题,我期待看看是否会有任何*理智*答案 – Tom 2015-02-10 13:03:58
哦..我认为Callum已经有一个好点 - 在大多数情况下,当我想观察多个值,我想来处理那些不同的变化,但我只能在IObserver实现中实现一个OnNext()方法。在我的情况下,这并不重要,但我看到这会如何导致一般问题。不过,我不认为线程会是一个问题,因为观察者可以随意以任何顺序触发他们的通知。还有其他问题吗?否则,我会忽略这种“最佳做法”。 – 2015-02-10 13:13:16