用java写一个观察者模式
时间: 2024-05-11 17:16:13 浏览: 8
好的,以下是一个简单的Java观察者模式示例代码:
观察者接口:
```
public interface Observer {
void update(String message);
}
```
具体主题类:
```
import java.util.ArrayList;
import java.util.List;
public class ConcreteSubject {
private List<Observer> observers = new ArrayList<>();
public void subscribe(Observer observer) {
observers.add(observer);
}
public void unsubscribe(Observer observer) {
observers.remove(observer);
}
public void notifyObservers(String message) {
for (Observer observer : observers) {
observer.update(message);
}
}
}
```
具体观察者类:
```
public class ConcreteObserver implements Observer {
private String name;
public ConcreteObserver(String name) {
this.name = name;
}
@Override
public void update(String message) {
System.out.printf("[%s] received message: %s\n", name, message);
}
}
```
测试代码:
```
public class TestObserverPattern {
public static void main(String[] args) {
ConcreteSubject subject = new ConcreteSubject();
ConcreteObserver observer1 = new ConcreteObserver("Observer1");
ConcreteObserver observer2 = new ConcreteObserver("Observer2");
// 订阅观察者
subject.subscribe(observer1);
subject.subscribe(observer2);
// 发布消息
subject.notifyObservers("Hello, World!");
// 取消订阅
subject.unsubscribe(observer2);
// 再次发布消息
subject.notifyObservers("Goodbye, World!");
}
}
```
输出结果:
```
[Observer1] received message: Hello, World!
[Observer2] received message: Hello, World!
[Observer1] received message: Goodbye, World!
```