Observer Pattern
观察者模式:
当一个对象(主题Subject)改变时通知其他对象(观察者Observer)
参考自https://www.runoob.com/design-pattern/observer-pattern.html
注意事项:
1、JAVA 中已经有了对观察者模式的支持类。 2、避免循环引用。 3、如果顺序执行,某一观察者错误会导致系统卡壳,一般采用异步方式。
观察者接口:
public interface Observer {
void update();
}
具体观察者:
public class ObserverImpl implements Observer {
@Override
public void update() {
System.out.println(this.hashCode()+"update()");
}
}
抽象主题:
public abstract class Subject {
List<Observer> list=new ArrayList<>();
public void addObs(Observer object){
list.add(object);
}
public void notifyObs(){
for(Observer obs:list){
obs.update();
}
}
}
具体主题:
public class Subsubject extends Subject {
public void change(){
System.out.println("state change() , causing:");
this.notifyObs();
}
}
使用:
Subsubject sb=new Subsubject();
sb.addObs(new ObserverImpl());
sb.change();//当具体主题sb发生改变时,通知其他具体观察者
浙公网安备 33010602011771号