观察者模式 – 老师来了
首先定义望风的人
教室门口望风的人是个观察者,继承Observable
public class Lookout extends Observable {
private String name;
public Lookout(String name) {
this.name = name;
}
public void teacherIsComing() {
// 1. 观察者自己的行为
System.out.println(this.name + "说:咳恨~咳恨~");
setChanged();
// 2. 通知教室其他人
notifyObservers();
}
public String getName() {
return name;
}
}
教室其他人
其他人都是订阅者,继承Observer
public class Student implements Observer {
private String name;
public Student(String name) {
this.name = name;
}
@Override
public void update(Observable o, Object arg) {
Lookout lookout = (Lookout) o;
System.out.println(this.name + "听到了" + lookout.getName() + "的咳嗽声,开始背单词:abandon... abandon...");
}
}
测试类
public class Test {
public static void main(String[] args) {
Student zhangSan = new Student("张三");
Student liSi = new Student("李四");
Lookout wangWu = new Lookout("王五");
wangWu.addObserver(zhangSan);
wangWu.addObserver(liSi);
wangWu.teacherIsComing();
}
}
运行效果
王五说:咳恨~咳恨~
李四听到了王五的咳嗽声,开始背单词:abandon... abandon...
张三听到了王五的咳嗽声,开始背单词:abandon... abandon...