首页 > 代码库 > Head First Design Pattern 读书笔记(2) 观察者模式

Head First Design Pattern 读书笔记(2) 观察者模式

Head First Design Pattern 读书笔记(2) Observer Pattern 观察者模式

Observer Pattern 类图

技术分享

定义

观察者模式:在对象间定义一个一对多的关系,当其中一个的对象发生改变时,所有依赖于这个对象的对象(即观察者们)都会自动更新或做执行某些行为。

几个OO的原测

  1. 尽量以松耦合的方式处理对象间关系–>软件工程时候学的“高內聚,低耦合”的好处

关于观察者模式

  1. 被观察对象通知观察者可以使用推送的方式(类图中带参数的notifyAction方法),也可以使用观察者自己获取更新的方式(类图中无参的notifyAction方法)。个人感觉后者更加灵活,因为这样被观察对象只负责通知,不用给观察者传递任何数据,观察者在更新的时候根据自己需要获取数据,并且这样就能做到异步更新了。不过上面类图有一点不好,就是具体观察者类只能继承观察者抽象类而不是实现观察者接口了。如果要用实现接口的方式,应该应该将上面的AbstractObserver类改为接口,将notifyAction()改为notifyAction(AbstractSubject a)即可。
  2. 很多GUI框架的事件与监听器机制都是通过观察者模式实现的。
  3. java有自己的观察者模式实现方法,使用java.util.Observer接口和java.util.Observable类实现。
  4. 被观察对象根据实现不同,通知观察者的顺序不一定按照list的顺序,最好不要在其他地方有依赖这个通知顺序的逻辑。

Head First Design Pattern 读书笔记(2) 观察者模式