观察者模式结构
观察者模式的结构中包含四种角色:
(1)主题(Observable):主题是一个接口,该接口规定了具体主题需要实现的方法,比如,添加、删除观察者以及通知观察者更新数据的方法。
(2)观察者(Observer):观察者是一个接口,该接口规定了具体观察者用来更新数据的方法。
(3)具体主题(MyObservable):具体主题是实现主题接口类的一个实例,该实例包含有可以经常发生变化的数据。具体主题需使用一个集合,比如ArrayList,存放观察者的引用,以便数据变化时通知具体观察者。
(4)具体观察者(MyObserver):具体观察者是实现观察者接口类的一个实例。具体观察者包含有可以存放具体主题引用的主题接口变量,以便具体观察者让具体主题将自己的引用添加到具体主题的集合中,使自己成为它的观察者,或让这个具体主题将自己从具体主题的集合中删除,使自己不再是它的观察者。
观察者模式的实现
抽象观察者,为所有具体观察者定义一个接口,在得到主题通知时执行需要作出的回应。
/**
* 抽象观察者
* Created by yangxiangjun on 2020/12/21.
*/
public interface Observer {
void call(String content);
}
抽象观察者,它把所有对观察者对象的引用保存到一个聚集里,每个主题都可以有任何数量的观察者。抽象主题提供一个接口,可以增加和删除观察者。
/**
* 抽象被观察者
* Created by yangxiangjun on 2020/12/21.
*/
public interface Subject {
/**
* 观察者注册
* @param obse