观察者模式
观察者模式(Observer Pattern):对象间的联动通知机制
观察者模式是行为型设计模式的一种,核心思想是定义对象间的一对多依赖关系:当一个对象(目标)的状态发生改变时,所有依赖它的对象(观察者)会自动收到通知并更新。这种模式就像 “订阅 - 发布” 系统 —— 订阅者(观察者)关注发布者(目标),当发布者有新内容时,所有订阅者都会收到推送,核心是 “状态联动,自动更新”。
观察者模式的核心结构

观察者模式通过四个核心角色实现对象间的联动,分工明确且耦合度低:
目标接口 / 类(Subject)
- 定义被观察对象的接口,提供注册、移除观察者及通知所有观察者的方法。
- 示例:
NewsPublisher(新闻发布者,定义addSubscriber()、removeSubscriber()、notifySubscribers())。
具体目标(ConcreteSubject)
- 实现目标接口,维护自身状态,当状态改变时调用
notify()方法通知所有观察者。 - 示例:
TechNewsPublisher(科技新闻发布者,状态为最新新闻内容)。
观察者接口(Observer)
- 定义观察者的接口,声明接收通知并更新自身的方法(通常名为
update())。 - 示例:
Subscriber(订阅者,定义update(String news)方法)。
具体观察者(ConcreteObserver)
- 实现观察者接口,在收到通知时执行具体的更新逻辑,通常会保存对目标的引用以获取最新状态。
- 示例:
EmailSubscriber(邮件订阅者,收到新闻后发送邮件)、AppSubscriber(APP 订阅者,收到新闻后推送通知)。
代码实现示例
以 “新闻订阅系统” 为例,展示观察者模式的实现:新闻发布者(目标)发布新闻时,所有订阅者(观察者)会自动收到通知。



