java 观察者模式代码
时间: 2024-10-15 18:00:33 浏览: 19
观察者模式(Observer Pattern)是一种行为设计模式,它定义了当主题(Subject)的状态发生改变时,所有订阅该主题的观察者(Observers)都会得到通知并更新。在Java中,我们可以使用集合框架(尤其是`java.util.Observable`和`java.util.Observer`接口)来实现这个模式。
以下是简单的Java观察者模式代码示例:
首先,创建一个`Observable`类(也称为主题):
```java
import java.util.Observable;
import java.util.Observer;
public class Subject extends Observable {
private String state;
public void setState(String newState) {
this.state = newState;
setChanged(); // 通知状态已更改
notifyObservers(state); // 通知所有观察者
}
public String getState() {
return state;
}
}
```
然后,定义一个`Observer`接口:
```java
public interface Observer {
void update(String message);
}
```
接下来,创建具体的观察者:
```java
public class ConcreteObserver implements Observer {
@Override
public void update(String message) {
System.out.println("Observer received: " + message);
}
}
```
最后,在主程序中注册观察者并触发更新:
```java
public class Main {
public static void main(String[] args) {
Subject subject = new Subject();
ConcreteObserver observer1 = new ConcreteObserver();
ConcreteObserver observer2 = new ConcreteObserver();
// 注册观察者
subject.addObserver(observer1);
subject.addObserver(observer2);
// 触发更新(例如改变状态)
subject.setState("State has been changed");
// 可以移除观察者,这里仅做演示
subject.removeObserver(observer1);
}
}
```
当你运行这个程序时,两个观察者都会接收到状态更新的消息。
阅读全文