观察者模式(Observer Pattern)是一种行为型设计模式,核心思想是一对多依赖:当一个对象(被观察者)状态变化时,所有依赖它的对象(观察者)都会自动收到通知并更新。
下面是其核心角色,通常包含 4 个:
职责:
示例:
interface Subject {
void attach(Observer observer);
void detach(Observer observer);
void notifyObservers();
}
职责:
Subject 接口示例:
class ConcreteSubject implements Subject {
private List<Observer> observers = new ArrayList<>();
private int state;
public void setState(int state) {
this.state = state;
notifyObservers();
}
public int getState() {
return state;
}
@Override
public void attach(Observer observer) {
observers.add(observer);
}
@Override
public void detach(Observer observer) {
observers.remove(observer);
}
@Override
public void notifyObservers() {
for (Observer o : observers) {
o.update();
}
}
}
职责:
update() 方法示例:
interface Observer {
void update();
}
职责:
Observer 接口update() 中定义收到通知后的行为示例:
class ConcreteObserver implements Observer {
private ConcreteSubject subject;
public ConcreteObserver(ConcreteSubject subject) {
this.subject = subject;
}
@Override
public void update() {
System.out.println("状态已更新:" + subject.getState());
}
}
| 角色 | 说明 |
|---|---|
| Subject | 被观察者抽象 |
| ConcreteSubject | 具体被观察者 |
| Observer | 观察者抽象 |
| ConcreteObserver | 具体观察者 |
java.util.Observer(已废弃)、PropertyChangeListener、事件监听机制如果你需要,我也可以帮你画一个UML 类图或结合**实际业务场景(如消息通知、事件监听)**来解释。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。