我想知道为什么.NET框架没有类似于Java的(Observer/Observable)接口对吗?
编辑: 是的,我知道事件和委托,但使用这些接口不是一种简单和书本式的设计模式方法吗?
编辑: 是的,我知道事件和委托,但使用这些接口不是一种简单和书本式的设计模式方法吗?
System.IObservable<T>
和System.IObserver<T>
(它们是IEnumerable<T>
和IEnumerator<T>
的Dual)。查看Reactive Extensions (Rx)项目,以在异步事件中使用这些接口进行组合。由于.NET具有实际事件和委托,而Java缺乏这些基本构造,并不得不采用丑陋的技巧(您的Observable接口)来传递“方法指针”。
您可以使用事件和混乱的代码来实现同样的功能,但是当它们锁定到您的非可处理内存块时,您将为清理它们而疯狂。
如果您还没有 .Net 4,请使用众所周知的观察者模式并按传统方式手动输入它。
观察者模式不仅仅是手写事件,它是可重复使用和可扩展代码的基础。它也是一种更加解耦和优雅的解决方案。
你去哪里了?这是关于事件和委托的。是的,这是一种hack方法,但它有效,并且更多的人喜欢使用语言内置的功能而不是自己输入设计模式。语言特性已经调试完毕,可以直接使用。