观察者(Observer)模式的用途是定义对象之间的一对多依赖关系,因此,当一个对象的状态发生改变时,其所有依赖项都会得到通知,并自动更新。
JDK 自带了具体观察者模式的实现。
相对来说比较简单,主题主要实现了一下几点
1.注册订阅者
2.监控DATA变化
3.通知所有订阅者数据变化
看完整个JDK的 Observer设计,还是存在很多疑问?
1.我们看到Observable这是个类,JAVA是单从继承,如果我们的Subject需要继承其他的类时那就存在问题;而且我们更倾向针对接口编程,多用组合;
2.有些关键方法被保护起来;譬如监控数据变化后的setChange()方法。
根据上面的类图,将 Observable改成接口,重新实现了下。demo看附件。。