定義:定義對象間的一種一對多的依賴關係,當一個對象的狀態發生變化時,所有依賴於它的對象都得到通知並被自動更新。
代碼:
package observer_model;
import java.util.ArrayList;
/**
* @author naivor
* 觀察者模式-場景類
*/
public class ObserverModel {
public static void main(String[] args) {
ConcreteSubject subject=new ConcreteSubject();
subject.Attach(new ObserverA());
subject.Attach(new ObserverB());
subject.setState("new state");
subject.notifyUser();
}
}
/**
*
* @author naivor
* 觀察者模式-通知抽象類
*/
abstract class Subject {
private ArrayList<Observer> observers=new ArrayList<Observer>();
public void Attach(Observer observer){
observers.add(observer);
}
public void detach(Observer observer){
observers.remove(observer);
}
public void notifyUser(){
for (Observer observer : observers) {
observer.update();
}
}
}
/**
*
* @author naivor
* 觀察者模式-通知者類
*/
class ConcreteSubject extends Subject{
private String state;
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
}
/**
*
* @author naivor
* 觀察者模式-觀察者抽象類
*/
abstract class Observer{
public abstract void update();
}
/**
*
* @author naivor
* 觀察者模式-觀察者A類
*/
class ObserverA extends Observer{
@Override
public void update() {
//觀察者A的業務邏輯
}
}
/**
*
* @author naivor
* 觀察者模式-觀察者B類
*/
class ObserverB extends Observer{
@Override
public void update() {
//觀察者B的業務邏輯
}
}