- 介绍
观察者模式又称发布/订阅模式,观察者模式定义了对象之间一对多的依赖关系,当一的一方状态发生变化时,依赖它的多的一方就会收到通知并且自动更新。
- 类图
- 代码
public interface Observer { public void update(String info); } public class StudentObserver implements Observer { private String name; private TeacherSubject teacherSubject; public StudentObserver(String name, TeacherSubject teacherSubject) { this.name = name; this.teacherSubject = teacherSubject; teacherSubject.addObserver(this); } public void update(String info) { System.out.println(name+"得到作业:"+info); } } public interface Subject { public void addObserver(Observer observer); public void deleteObserver(Observer observer); public void notifyObserver(); } public class TeacherSubject implements Subject { private List<Observer>observers=new ArrayList<Observer>(); private String info; public void addObserver(Observer observer) { observers.add(observer); } public void deleteObserver(Observer observer) { observers.remove(observer); } public void notifyObserver() { for (Observer observer: observers) { observer.update(info); } } public void setHomeWork(String info){ this.info=info; System.out.println("今天的作业是"+info); this.notifyObserver(); } } public class Main { public static void main(String[] args) { TeacherSubject teacher=new TeacherSubject(); StudentObserver zhangSan=new StudentObserver("张三", teacher); StudentObserver LiSi=new StudentObserver("李四", teacher); StudentObserver WangWu=new StudentObserver("王五", teacher); teacher.setHomeWork("数据库课设"); } }