Java 的观察者模式(Observer Pattern)是好用的,但是“要看场景”。下面我从优点、缺点、适用场景,以及 Java 中常见实现方式几个方面给你一个比较实在的评价。
一句话概括:
一个对象状态发生变化时,自动通知所有依赖它的对象。
典型结构:
subject.addObserver(new A());
subject.addObserver(new B());
比如:
Java 自带:
java.util.Observer(已废弃,但思想还在)java.util.Observable(已废弃)Listener、Callback、Spring Event实际项目中常见:观察者越来越多,最后没人敢动
✅ 解决方式:
subject.removeObserver(observer);
如果逻辑是:
A → B → C → D,有顺序、有条件、有回滚
那么观察者模式 不如流程编排 / 状态机 / 规则引擎
✅ 灵活
❌ 重复代码多
public interface OrderListener {
void onPaid(Order order);
}
✅ 简单直观
✅ 企业项目最常见
@EventListener
public void handleOrderPaid(OrderPaidEvent event) {}
✅ 解耦彻底
✅ 支持异步(@Async)
✅ 企业级首选
✅ 分布式
✅ 高并发
❌ 成本高、复杂
✅ 适合用观察者模式:
❌ 不适合:
观察者模式在 Java 中是“好用但容易被滥用”的设计模式。
推荐做法:
如果你愿意,可以告诉我:
我可以直接帮你判断 该不该用、怎么用最好。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。