我想知道为什么.NET框架没有类似于Java功能的对(Observer / Observable)接口?
修改 是的,我知道事件和代表,但使用这些接口是一个简单的书本方法这个DP不是吗?
答案 0 :(得分:14)
在.NET 4 中它:System.IObservable<T>
和System.IObserver<T>
(IEnumerable<T>
IEnumerator<T>
和{{1}}) 。查看Dual项目,了解这些接口与异步事件的组合使用。
更一般地说,Observer模式在带有事件的.NET中得到了更好的服务。
答案 1 :(得分:6)
因为.NET有实际事件和委托。 Java缺乏这些基本结构,不得不求助于丑陋的黑客攻击(你的Observable接口)来传递“方法指针”。
答案 2 :(得分:4)
您可以通过事件和意大利面条代码实现相同的功能,它们会让您疯狂地尝试清理它们,因为它们将自己锁定在非一次性内存块中。
如果您还没有.Net 4,请使用众所周知的观察者模式,并以老式的方式手动输入。
观察者模式不仅仅是简单地编写事件,它是可重用和可扩展代码的基础。它也是解决方案的一种更加分离和优雅的方法。
答案 3 :(得分:3)
你可以通过Events实现同样的目标。您也可以轻松实现自己的Observer模式。它必须是最容易实现的模式之一:http://en.wikipedia.org/wiki/Observer_pattern
至于部分原因。不确定。
答案 4 :(得分:1)