设计模式之观察者模式
观察者模式(Observer Pattern)是一种行为型设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态发生变化时,所有依赖于它的对象都会得到通知并自动更新。
核心概念
- Subject(主题): 被观察的对象,它知道观察者,并提供注册、注销和通知观察者的接口。
- Observer(观察者): 观察者对象,它需要知道主题,并定义更新接口。
- ConcreteSubject(具体主题): 实现Subject接口,它负责存储观察者列表,并通知观察者。
- ConcreteObserver(具体观察者): 实现Observer接口,它定义了当主题状态发生变化时的更新方法。
代码示例
// Subject接口
public interface Subject {
void registerObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers();
}
// ConcreteSubject类
public class ConcreteSubject implements Subject {
private List<Observer> observers = new ArrayList<>();
private int state;
public void registerObserver(Observer observer) {
observers.add(observer);
}
public void removeObserver(Observer observer) {
observers.remove(observer);
}
public void notifyObservers() {
for (Observer observer : observers) {
observer.update(this);
}
}
public void setState(int state) {
this.state = state;
notifyObservers();
}
public int getState() {
return state;
}
}
// Observer接口
public interface Observer {
void update(Subject subject);
}
// ConcreteObserver类
public class ConcreteObserver implements Observer {
private int observerState;
@Override
public void update(Subject subject) {
observerState = ((ConcreteSubject) subject).getState();
System.out.println("Observer state updated to: " + observerState);
}
}
应用场景
- 当一个对象的状态发生变化时,需要自动通知其他对象。
- 当一个对象的行为需要触发一系列相关行为时。
- 当需要实现一个观察者列表,并对其进行管理时。
扩展阅读
更多设计模式的内容,请访问设计模式教程。