设计模式读书笔记[2]:观察者模式(Observer)
观察者模式(Observer):
定义了对象之间的一对多依赖,当一个对象改变状态时,它的所有依赖者都会收到通知并自动更新。
这就是著名的“你不要找我,我会找你”模式,个人觉得这个模式相对来讲还是比较简单明了的,降低了消息发送者与消息接收者之间的耦合,消息接收由传统的拉模式转换为推模式,这样消息接收者就可以不用轮询是否有消息产生,节省资源。
JDK的AWT/swing就大量使用了观察者模式,比如:
Button btn = new Button("click me"); btn.addActionListener(new ActionListener { public void actionPerformed(ActionEvent e) { // logic to process btn click event } });
这个Button就是一个消息产生者,而它添加的那个匿名类就是消息接收者,在btn被按下时,它只要调用消息接收者的actionPerformed()方法就行了,而消息接收者什么也不用做,等着被通知就行了。