在閱讀Observer設計模式時,我注意到它是用接口實現的。在Java中,java.util.observable實現也是一個類。 C#和Java版本不應該使用接口嗎?爲什麼.NET ObservableCollection <T>實現爲類而不是接口?
Scott
在閱讀Observer設計模式時,我注意到它是用接口實現的。在Java中,java.util.observable實現也是一個類。 C#和Java版本不應該使用接口嗎?爲什麼.NET ObservableCollection <T>實現爲類而不是接口?
Scott
那麼,它實現INotifyCollectionChanged
和INotifyPropertyChanged
。然而,有趣的是,它不會實現您可能預期的.NET 4.0的新IObservable<T>
接口。
對於那裏有一個通用形式的INotifyCollectionChanged
......可以證明是有用的,但我不知道其中之一。
所以,我實際上已經嘗試過了,如果你直接做,它會變得非常醜陋,因爲任何實現IObservable
但他們使用接口。 .NET中的ObservableCollection是接口的一個實現 - 您可以自由地忽略它並適用於您自己的實現。
你如何「作爲接口實現」?如果已經實施了,這是一個班級,不是嗎?一個接口不是自己實現的。 – Kobi 2010-07-25 06:58:09
然而,這個問題的意義。 .net集合對象圖與ObservableCollection有巨大的差距。它的功能應該被分離到不同的接口中,以便以更靈活的方式實現可擴展性。例如,如果我實現ObservableDictionary :INotifyCollectionChanged,則不能將其用作ReadOnlyObservableCollection的源代碼。目前的實現不是基於模式的,並且根本不支持基於模式的開發。 –
2015-10-28 16:50:41