Java 中**观察者模式(Observer Pattern)**是非常经典、应用极广的设计模式,核心思想是:
一个对象(被观察者 / Subject)状态变化时,自动通知所有依赖它的对象(观察者 / Observer)。
下面按典型应用场景 + Java 中具体例子来说明。
java.util.Observable / Observer(早期标准实现)class WeatherData extends Observable {
void measurementsChanged() {
setChanged();
notifyObservers();
}
}
class Display implements Observer {
public void update(Observable o, Object arg) {
System.out.println("数据更新");
}
}
⚠️ Java 9 已标记为
@Deprecated
这是最典型的观察者模式应用之一
button.addActionListener(e -> {
System.out.println("按钮被点击");
});
Spring 大量使用观察者模式
ApplicationEventPublisher:被观察者ApplicationListener:观察者@Component
public class MyListener implements ApplicationListener<MyEvent> {
public void onApplicationEvent(MyEvent event) {
System.out.println("收到事件");
}
}
@EventListener@EventListener
public void handleEvent(MyEvent event) {}
✅ 解耦、异步、事务事件都基于观察者模式
本质:
订单支付成功
├─ 发短信
├─ 发邮件
├─ 更新库存
└─ 记录日志
✅ 使用观察者模式避免 if-else 爆炸
interface Observer {
void update(String msg);
}
class Subject {
private List<Observer> observers = new ArrayList<>();
void add(Observer o) { observers.add(o); }
void notify(String msg) {
observers.forEach(o -> o.update(msg));
}
}
✅ 适合:
❌ 不适合:
如果你愿意,我也可以:
你想看哪一个?
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。