模式定义:定义对象间的一种一对多的依赖关系,当一个对象的状态发送改变时,所有依赖于它的对象都能得到通知并被自动更新
场景1:短信订阅某资讯,当资讯有更新时通知订阅者
场景2:微信订阅公众号,当公众号有新消息时会通知订阅者
场景中订阅资讯的人即为观察者,观察者不用时刻关注资讯的变化,当资讯有更新时,会立刻通知订阅资讯的人,即观察者;里面存在一对多的关系,资讯可以被多个人订阅,被观察的事物只有一个而观察事物的人可以有多个
类1:Observer:观察者
类2:Observable:被观察者
类3:News:资讯
示例代码:
定义观察者,观察者中只要接受资讯即可,接受的类型定义为泛型
public interface Observer<T> {
void receive(T data);
}
定义被观察者,被观察者提供三个方法,订阅/取消/通知
public class Observable <T> {
private List<Observer<T>> list = new ArrayList<>();
public void register(Observer<T> observ