在 Java 中,**观察者模式(Observer Pattern)**最适合在以下场景使用:
当 “被观察者(Subject)” 的状态发生改变,而 “观察者(Observer)” 有多个,并且这些观察者彼此不知道对方存在时。
✅ 典型例子:
WeatherData -> CurrentConditionsDisplay
-> StatisticsDisplay
-> ForecastDisplay
如果你不希望:
A 模块直接调用 B、C、D 模块的方法
而是希望:
A 只负责通知:“我变了”,谁关心谁来监听
✅ 适合用观察者模式
观察者模式是 一对多依赖 + 松耦合 的经典方案
当系统本质是“事件驱动”的时候:
OrderPaidEvent
-> EmailObserver
-> SmsObserver
-> InventoryObserver
在 GUI / MVC 中非常常见:
✅ 用观察者模式最好的条件:
java.util.Observable
java.util.Observer
⚠️ 已过时(Java 9 标记 deprecated)
interface Observer {
void update(String msg);
}
@EventListener
public void handleOrderEvent(OrderEvent event) {}
✅ 实际项目中最推荐
❌ 观察者数量极少且固定
❌ 调用关系必须是同步、强一致性的
❌ 调试困难、链路不清晰还能接受
当“一个变化,多个响应”,且你想“低耦合、可扩展”时,观察者模式最好用。
如果你愿意,我可以:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。