观察者模式
观察者(Observer)模式:是对象的行为模式,又叫做发布-订阅(Publish/Subscribe)模式
观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象,这个主题对象在状态上发生变化时,会通知所有观察者对象,使它们能够自动更新自己。
总体设计图:
![](https://img.haomeiwen.com/i7730759/da614d4093e0a59e.png)
java已经提供了Observer接口和Observable抽象类
以下是自己的写的代码观察者模式:
//定义观察者的接口Observer
public interface Observer {
void update(String state);
}
//抽象主题
public abstract class Subject {
private List<Observer> observers = new ArrayList<Observer>();
public void add(Observer observer){
observers.add(observer);
System.out.println("增加一个订阅者");
}
public void detach(Observer observer){
observers.remove(observer);
System.out.println("删除一个订阅者");
}
/**
* 通知订阅者发生变化
* @param state
*/
public void notifyObservers(String state){
for(Observer observer:observers){
observer.update(state);
}
}
}
//子类观察者
public class SunnyObserver implements Observer {
@Override
public void update(String state) {
System.out.println("接收到最新消息"+state);
}
}
//子类主题
public class PublishSubject extends Subject {
public void change(String state){
notifyObservers(state);
}
}
用到的地方:
广播、rxjava等
网友评论