提供一个notifier call chain的demo
时间: 2024-02-03 17:03:42 浏览: 19
以下是一个简单的 Java 示例,演示了如何使用 Notifier Chain 实现事件通知和处理机制:
```java
import java.util.ArrayList;
import java.util.List;
// 定义事件
class Event {
public String name;
public Event(String name) {
this.name = name;
}
}
// 定义观察者接口
interface Observer {
void onEvent(Event event);
}
// 定义观察者实现类
class Logger implements Observer {
public void onEvent(Event event) {
System.out.println("Logger: Event " + event.name + " occurred");
}
}
class Metrics implements Observer {
public void onEvent(Event event) {
System.out.println("Metrics: Event " + event.name + " occurred");
}
}
// 定义主题类
class Notifier {
private List<Observer> observers = new ArrayList<>();
public void addObserver(Observer observer) {
observers.add(observer);
}
public void removeObserver(Observer observer) {
observers.remove(observer);
}
public void notifyObservers(Event event) {
for (Observer observer : observers) {
observer.onEvent(event);
}
}
}
// 使用示例
public class NotifierChainDemo {
public static void main(String[] args) {
// 创建观察者
Observer logger = new Logger();
Observer metrics = new Metrics();
// 创建主题
Notifier notifier = new Notifier();
notifier.addObserver(logger);
notifier.addObserver(metrics);
// 发布事件
Event event = new Event("some event");
notifier.notifyObservers(event);
}
}
```
在这个示例中,我们定义了一个 `Event` 类表示一个事件,定义了一个 `Observer` 接口和两个实现类 `Logger` 和 `Metrics` 作为观察者。我们还定义了一个 `Notifier` 主题类,用于管理观察者并通知它们事件的发生。在 `main` 方法中,我们创建了观察者和主题,并将观察者添加到主题的观察者列表中。最后,我们发布了一个事件并通知所有观察者。当事件发生时,观察者会被通知并执行自己的逻辑。