定义
观察者模式(Observer Pattern)是一种行为设计模式,允许一个对象(称为“主题”或“可观察对象”)维护一组依赖于它的对象(称为“观察者”),当主题的状态发生变化时,会自动通知所有观察者对象。
应用场景
观察者模式适用于以下场景:
- 联动反应:当一个对象的改变需要自动触发其他对象的变化时。
- 解耦系统:当一个系统需要在对象之间减少紧密耦合以提高灵活性和可重用性时。
- 事件处理:在事件驱动系统中,用于监听和响应事件或状态的变化。
示例与反例
示例:
一个典型的示例是新闻订阅服务,订阅者可以订阅新闻主题,当有新新闻发布时,所有订阅者都会收到通知。
// 观察者接口
interface Observer {
void update(String message);
}
// 可观察对象接口
interface Observable {
void addObserver(Observer o);
void removeObserver(Observer o);
void notifyObservers(