为什么.NET没有像Java这样的内置Observer模式?

时间:2010-08-17 07:17:55

标签: c# design-patterns observer-pattern .net-2.0

我想知道为什么.NET框架没有类似于Java功能的对(Observer / Observable)接口?

修改 是的,我知道事件和代表,但使用这些接口是一个简单的书本方法这个DP不是吗?

5 个答案:

答案 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)

你去过哪里。它被称为事件和代表。是的,它是一个黑客,但它的工作原理,更多人喜欢使用内置功能的语言而不是你必须自己键入的设计模式。语言功能已经过调试并准备就绪。