Head First Design Pattern 读书笔记(2) Observer Pattern 观察者模式
Observer Pattern 类图
![技术分享](http://static.oschina.net/uploads/space/2015/0102/210343_8OVs_1010578.png)
定义
观察者模式:在对象间定义一个一对多的关系,当其中一个的对象发生改变时,所有依赖于这个对象的对象(即观察者们)都会自动更新或做执行某些行为。
几个OO的原测
- 尽量以松耦合的方式处理对象间关系–>软件工程时候学的“高內聚,低耦合”的好处
关于观察者模式
- 被观察对象通知观察者可以使用推送的方式(类图中带参数的notifyAction方法),也可以使用观察者自己获取更新的方式(类图中无参的notifyAction方法)。个人感觉后者更加灵活,因为这样被观察对象只负责通知,不用给观察者传递任何数据,观察者在更新的时候根据自己需要获取数据,并且这样就能做到异步更新了。不过上面类图有一点不好,就是具体观察者类只能继承观察者抽象类而不是实现观察者接口了。如果要用实现接口的方式,应该应该将上面的AbstractObserver类改为接口,将notifyAction()改为notifyAction(AbstractSubject a)即可。
- 很多GUI框架的事件与监听器机制都是通过观察者模式实现的。
- java有自己的观察者模式实现方法,使用java.util.Observer接口和java.util.Observable类实现。
- 被观察对象根据实现不同,通知观察者的顺序不一定按照list的顺序,最好不要在其他地方有依赖这个通知顺序的逻辑。
Head First Design Pattern 读书笔记(2) 观察者模式
原文:http://my.oschina.net/u/1010578/blog/363134