心胸决定格局,眼界决定境界...

观察者模式

eg:   公司同事吵股票   让前台 放哨,老总到时,打电话通知,开始继续工作。

1.双向耦合代码

前台需要知道被通知的同事,同事需要知道前台的状态,所以相互包含

问题1.如果有部分同事看NBA,不是吵股票,则需要改变前台和同事的状态

此时,抽象出观察者,继承出各种从事不同活动的观察者(同事),利用多态,执行响应的操作。

 

遗留问题:具体观察者中仍然是相互耦合的。

2.增加1个通知者抽象类(前台)

这样将耦合的双方依赖于抽象,而不是依赖于具体。符合依赖倒转原则。

 

3.事件委托实现。

如果去掉抽象观察类,如何弥补不同的操作(多态)

声明委托,包含在具体的通知者类里。

将不同观察者的对象的具体操作都添加到委托实例里面,所有的方法被依次唤起。//具体实现在客户端代码里面

 

 

 

 

 

posted @ 2014-01-08 20:24  WELEN  阅读(127)  评论(0)    收藏  举报