定义
观察者模式定义了对象之间一对多依赖,这样一来,当一个对象改变状态时,它所依赖者都会收到通知并自动更新
主题类
public abstract class Subject {
private List<Observer> list = new ArrayList<>();
public void attach(Observer observer){
list.add(observer);
System.out.println("Attached an observer");
}
public void detach(Observer observer){
list.remove(observer);
}
public void nodifyObservers(String newState){
for(Observer observer : list){
observer.update(newState);
}
}
}
观察类
public interface Observer {
public void update(String state);
}
//观察的具体继承类
public class ConcreteObserver implements Observer {
private String observerState;
@Override
public void update(String state) {
observerState = state;
System.out.println("状态为:"+observerState);
}
}
客户端
public class Client {
public static void main(String[] args) {
ConcreteSubject subject = new ConcreteSubject();
Observer observer = new ConcreteObserver();
subject.attach(observer);
subject.change("new state");
}
}
备注:回调函数,回调函数就是方法里面传方法
代码地址:https://github.com/wenutopia/HeadFirst.git