观察者模式
定义
对象之间定义一对多的依赖,当一这个对象状态发生变化,它所依赖的对象都能得到变化后的状态值。(简单的来说,就类似消息系统的发布订阅模式。其中消息系统中的消费者就是观察者,消息系统中的生产者就是被观察者。当生产者的状态发生变化,那么订阅该消息的消费者就将全部接收到变化的信息)
类图

说明
由UML可以看出,该模式由四个对象组成:
- 抽象被观察者角色:也就是一个抽象主题,它把所有对观察者对象的引用保存在一个集合中,每个主题都可以有任意数量的观察者。抽象主题提供一个接口,可以增加和删除观察者角色。一般用一个抽象类和接口来实现。
 - 抽象观察者角色:为所有的具体观察者定义一个接口,在得到主题通知时更新自己。
 - 具体被观察者角色:也就是一个具体的主题,在集体主题的内部状态改变时,所有登记过的观察者发出通知。
 - 具体观察者角色:实现抽象观察者角色所需要的更新接口,一边使本身的状态与制图的状态相协调。
 
代码实现
Subject
1  | public interface Subject {  | 
Observer
1  | public interface Observer {  | 
MsgSubject
1  | public class MsgSubject implements Subject {  | 
MsgObserver
1  | public class MsgObserver implements Observer {  | 
测试
1  | public static void main(String[] args) {  | 
结果
1  | 收到消息:sds  |