构造:一个抽象类,多个实体类,一个实体类容器
作用:对类进行统一的修改
/**
* @Auther: zmk
* @Date: 2019/6/24 12:09
* @Description: 一个抽象的观察者
*/
public abstract class Observer {
public SubjectImpl subject;
public abstract void updateState(String state);
}
public class CObserverImpl extends Observer {
public CObserverImpl(SubjectImpl subject){
this.subject = subject;
this.subject.add(this);
}
@Override
public void updateState(String state) {
System.out.println("C : 进行状态更新 "+state);
}
}
public class BObserverImpl extends Observer {
public BObserverImpl(SubjectImpl subject){
this.subject = subject;
this.subject.add(this);
}
@Override
public void updateState(String state) {
System.out.println("B : 进行状态更新 "+state);
}
}
public class AObserverImpl extends Observer {
public AObserverImpl(SubjectImpl subject){
this.subject = subject;
this.subject.add(this);
}
@Override
public void updateState(String state) {
System.out.println("A : 进行状态更新 "+state);
}
}
public class SubjectImpl {
List<Observer> list = new ArrayList<Observer>();
public void add (Observer observer){
list.add(observer);
}
public void remove(Observer observer){
list.remove(observer);
}
public void updateState(String state){
for(Observer observer:list){
observer.updateState(state);
}
}
}
public class TestMain {
public static void main(String[] args) {
SubjectImpl subject = new SubjectImpl();
new AObserverImpl(subject);
new BObserverImpl(subject);
new CObserverImpl(subject);
subject.updateState("zhansan");
subject.updateState("lisi");
}
}
输出结果:
A : 进行状态更新 zhansan
B : 进行状态更新 zhansan
C : 进行状态更新 zhansan
A : 进行状态更新 lisi
B : 进行状态更新 lisi
C : 进行状态更新 lisi