1. JAVA中通过使用 java.util.Observable类 和 java.util.Observer接口 来实现观察者模式
实例:老师有10个学生,10个学生都有老师的电话号码,当老师换电话了,通知所有学生更新自己的电话簿
2. 创建被观察者类(Teacher)继承java.util.Observable类
public class Teacher extends Observable{ //老师的电话号码 private String phone; public String getPhone() { return phone; } public void setPhone(String phone) { this.phone = phone; //老师换电话了,通知所有学生 this.setChanged(); this.notifyObservers(); } }
3. 创建观察者类(Student)实现java.util.Observer接口
import java.util.Observable; import java.util.Observer; public class Student implements Observer{ //学生的名字 private String name; public Student(String name){ this.name = name; } @Override public void update(Observable o, Object arg) { Teacher teacher = (Teacher) o; System.out.println(this.name+" "+teacher.getPhone()); } }
4. 测试类
public class Test { public static void main(String[] args) { //这是老师 Teacher teacher = new Teacher(); //老师有10个学生 for(int i = 1;i<=10;i++){ Student student = new Student("小"+i); teacher.addObserver(student); } //老师换电话了 teacher.setPhone("110"); System.out.println("~~~~~~~~~~~~~"); //老师又换电话了 teacher.setPhone("119"); } }
5. 测试结果
小10 110
小9 110
小8 110
小7 110
小6 110
小5 110
小4 110
小3 110
小2 110
小1 110
~~~~~~~~~~~~~
小10 119
小9 119
小8 119
小7 119
小6 119
小5 119
小4 119
小3 119
小2 119
小1 119
结果:老师两次更新电话号码,都会通知所有学生调用update方法,更新自己的电话簿