java实现观察者模式
时间: 2024-08-12 12:10:43 浏览: 48
观察者模式(Observer Pattern)是一种行为设计模式,它定义了对象之间的一对多依赖关系,当一个对象的状态改变时,所有依赖于它的对象都会得到通知并自动更新。在Java中,我们可以使用Java.util.Observable和Observer接口来实现这一模式。
1. **Observable接口**:这是被观察者接口,包含一个抽象方法`notifyObservers()`,用于通知所有注册的观察者。通常,我们创建一个类实现这个接口,并存储观察者的列表。
```java
import java.util.ArrayList;
import java.util.List;
public class Observable<T> {
private List<Observer<T>> observers = new ArrayList<>();
public void addObserver(Observer<T> observer) {
observers.add(observer);
}
public void removeObserver(Observer<T> observer) {
observers.remove(observer);
}
protected void notifyObservers(T event) {
for (Observer<T> observer : observers) {
observer.update(event);
}
}
}
```
2. **Observer接口**:这是观察者接口,定义了更新操作的方法`update()`。
```java
import java.util.EventObject;
public interface Observer<T> {
void update(T event);
}
```
3. **Concrete Observers**:具体的观察者类实现`Observer`接口,订阅并接收来自`Observable`的通知。
```java
public class ConcreteObserver implements Observer<T> {
@Override
public void update(T event) {
// 处理事件的代码
System.out.println("Received event: " + event);
}
}
```
4. **Subject修改状态后调用通知**:在`Observable`的实例中,每当状态改变时,就调用`notifyObservers()`方法通知所有观察者。
```java
public class Subject {
private Observable<T> observable;
public Subject() {
this.observable = new Observable<>();
}
// 修改状态的方法,这里只是一个示例
public void setState(T state) {
observable.notifyObservers(state);
}
}
```
阅读全文