订阅者java_发布者订阅者模式之JAVA实现
时间: 2023-08-05 12:23:03 浏览: 44
实现发布者订阅者模式的关键在于定义一个接口用于让订阅者注册和取消订阅,以及通知订阅者有关事件的发生。
下面是一个简单的Java实现:
首先定义一个接口,名为Subject,用于让订阅者注册、取消订阅和接收通知:
```java
public interface Subject {
void registerObserver(Observer observer);
void removeObserver(Observer observer);
void notifyObservers(String message);
}
```
接着实现一个类,名为Publisher,实现Subject接口:
```java
import java.util.ArrayList;
import java.util.List;
public class Publisher implements Subject {
private List<Observer> observers = new ArrayList<>();
@Override
public void registerObserver(Observer observer) {
observers.add(observer);
}
@Override
public void removeObserver(Observer observer) {
observers.remove(observer);
}
@Override
public void notifyObservers(String message) {
for (Observer observer : observers) {
observer.update(message);
}
}
}
```
Publisher类有一个observers列表,用于存储所有订阅者。当订阅者注册时,将其添加到列表中;当订阅者取消订阅时,从列表中移除。当有事件发生时,通过调用notifyObservers方法,通知所有订阅者。
最后,实现一个订阅者接口Observer:
```java
public interface Observer {
void update(String message);
}
```
订阅者实现Observer接口,并在update方法中处理通知。
这样,就可以使用发布者订阅者模式了。例如,可以创建一个Publisher实例,并让几个订阅者注册:
```java
Publisher publisher = new Publisher();
Observer observer1 = new Observer() {
@Override
public void update(String message) {
System.out.println("Observer 1 received message: " + message);
}
};
publisher.registerObserver(observer1);
Observer observer2 = new Observer() {
@Override
public void update(String message) {
System.out.println("Observer 2 received message: " + message);
}
};
publisher.registerObserver(observer2);
```
然后,发布者可以通过调用notifyObservers方法通知所有订阅者:
```java
publisher.notifyObservers("Hello, world!");
```
这将会输出:
```
Observer 1 received message: Hello, world!
Observer 2 received message: Hello, world!
```
这就是一个简单的Java实现发布者订阅者模式的例子。