观察者模式就是发布者发布信息,订阅者获取信息,订阅了就能收到信息,没订阅就收不到信息。
结构图
以公众号推送消息为例:
//抽象观察者
//定义了一个update()方法,当被观察者调用notifyObservers()方法时,观察者的update()方法会被回调。
interface IObserver{
void update(String msg);
}
//观察者:实现了update方法
class User implements IObserver{
@Override
public void update(String msg) {
Log.e(TAG, "receive msg = " + msg);
}
}
//抽象被观察者接口:声明了添加、删除、通知观察者方法
interface ISubject{
void registerObserver(IObserver obs);
void unregisterObserver(IObserver obs);
void notifyObserver(String msg);
}
//被观察者,如公众号推送消息
//实现了ISubject接口,对ISubject接口的三个方法进行了具体实现
class Publisher implements ISubject{
List<IObserver> ObserverList = new ArrayList<>();
@Override
public void registerObserver(IObserv