观察者模式(有时又被称为发布/订阅模式)是软体设计模式的一种。在此种模式中,一个目标物件管理所有相依于它的观察者物件,并且在它本身的状态改变时主动发出通知。这通常透过呼叫各观察者所提供的方法来实现。此种模式通常被用来实作事件处理系统。观察者模式定义了一种一对多的依赖关系,让多个观察者对象同时监听某一个主题对象。这个主题对象在状态发生改变时候,会通知所有的观察对象,以便他们能更新自己
主题对象,主题对象发生变化时,能够更新监听他的对象
package com.design.observer03; import java.util.ArrayList; import java.util.List; public class Subject { private List<Observer> observers = new ArrayList<Observer>(); public void addObserver(Observer observer) { observers.add(observer); } public void removeObserver(Observer observer) { observers.remove(observer); } public void notifyObservers() { for(Observer o:observers) { o.update(); } } }
package com.design.observer03; public abstract class Observer { protected String name; public Observer(String name,Subject subject) { this.name = name; } public String getName() { return name; } public void setName(String name) { this.name = name; } public abstract void update(); }
package com.design.observer03; public class ObserverA extends Observer{ public ObserverA(String name, Subject subject) { super(name, subject); subject.addObserver(this); } @Override public void update() { System.out.println("ObserverA 更新自己"); } }
package com.design.observer03; public class ObserverB extends Observer{ public ObserverB(String name, Subject subject) { super(name, subject); subject.addObserver(this); } @Override public void update() { System.out.println("ObserverB 更新自己"); } }