儘管可以將觀察者附加到多個提供者,但推薦的模式是僅將
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