观察者模式
观察者模式可以叫做发布订阅模式,其实就是在发布者内部维护一个订阅者列表
定义一个发布者接口
package w02;
public interface Publisher {
void addObserver(Observer o);
void remoObserver(Observer o);
void notifyObserver();
}
定义一个观察者模式接口
package w02;
public interface Observer {
void reciveCallBack();
}
实现Publisher
package w02;
import java.util.LinkedList;
import java.util.List;
public class PublisherImpl implements Publisher {
//维护了一个Observer集合
private List<Observer> list;
public PublisherImpl(){
this.list = new LinkedList();
}
@Override
public void addObserver(Observer o) {
list.add(o);
}
@Override
public void remoObserver(Observer o) {
list.remove(o);
}
@Override
public void notifyObserver() {
list.forEach(observer->{
//调用reciveCallBack逻辑
observer.reciveCallBack();
});
}
//当stateChange()被调用时,通知Observer
public void stateChange(String state){
System.out.println("我要改变状态了--->"+state);
//遍历观察者集合
notifyObserver();
}
}
实现Observer
package w02;
public class Listerner implements Observer {
//当Publisher的stateChange()逻辑执行后就会通知我们的ObServer执行reciveCallBack()逻辑
@Override
public void reciveCallBack() {
System.out.println("Listen to the oublisher state change");
}
}