package com.observer;
import java.util.ArrayList;
import java.util.List;
public class Subject {
private int stat;
private List oberverList= new ArrayList();;
public void setStat(int stat) {
this.stat = stat;
notifyAllObservers();
}
public int getStat() {
return stat;
}
public void add(Oberver oberver) {
oberverList.add(oberver);
}
public void notifyAllObservers() {
oberverList.forEach(oberver -> oberver.handel());
}
}
观察者的父类
package com.observer;
public abstract class Oberver {
protected Subject subject;
public abstract void handel();
}
三个观察者子类
子类一
package com.observer;
public class ObserverSon1 extends Oberver {
public ObserverSon1(Subject subject) {
this.subject = subject;
this.subject.add(this);
}
@Override
public void handel() {
System.out.println("son1");
}
}
子类二
package com.observer;
public class ObserverSon2 extends Oberver {
public ObserverSon2(Subject subject) {
this.subject = subject;
this.subject.add(this);
}
@Override
public void handel() {
System.out.println("son2");
}
}
子类三
package com.observer;
public class ObserverSon3 extends Oberver {
public ObserverSon3(Subject subject) {
this.subject = subject;
this.subject.add(this);
}
@Override
public void handel() {
System.out.println("son3");
}
}
测试
package com.observer;
public class Main {
public static void main(String[] args) {
Subject subject = new Subject();
new ObserverSon1(subject);
new ObserverSon2(subject);
new ObserverSon3(subject);
subject.setStat(1);
}
}
输出结果:



