Skip to content

观察者模式

意图

定义对象间一对多依赖,当一个对象状态改变时,所有依赖者都得到通知。

类图

Java 示例(手写)

java
import java.util.*;

public interface StockObserver {
    void onPriceChanged(String symbol, double price);
}

public class Stock {
    private final String symbol;
    private double price;
    private final List<StockObserver> obs = new ArrayList<>();
    public Stock(String symbol, double p) { this.symbol = symbol; this.price = p; }
    public void subscribe(StockObserver o) { obs.add(o); }
    public void setPrice(double p) {
        this.price = p;
        for (StockObserver o : obs) o.onPriceChanged(symbol, p);
    }
}

JDK:java.util.Observable(已过时)、PropertyChangeSupport、响应式流(RxJava、Project Reactor)均为观察者演进。

下一节:状态模式