.Net 4.0 beta 中的Observer模式学习体会
.Net 4.0 beta 中增加了Observer模式,经过学习了解还是有一点心得体会。首先,还是经典的Observer设计模式,主要有两个接口: 一个是IObservable<T>, 这个相当于事件的发布者(publisher),另一个是IObserver<T>,相当于事件的接收者(receiver)。IObservable<T>通过Subscribe方法接受IObserver<T>的订阅(或注册)。相应类图如下:
想必这个模式大家都已非常熟悉, 但是就我个人而言还是有一点心得的,那就是这个设计中observer的注册和取消的机制。要是在没有看这个设计之前让我自己来设计,我想我肯定会给IObservable<T>加上一个Unsubscribe方法了。当看到.Net中的这个设计让Subscribe方法返回一个IDispoable时还是眼前一亮的,这是我无论如何也想不到的。通过把observer的取消订阅行为给代理出来,这样就可以减少用户过多的与IObservable<T>打交道。