首先,您应该从方法中删除static
修饰符。TrafficListener.watchNewTraffic()
否则,您不能有多个侦听器。更好的是,您应该制作TrafficListener
一个界面:
interface TrafficListener {
void watchNewTraffic();
}
每个想成为监听器的类都需要实现接口。然后,您可以在TrafficController
类中维护一组侦听器:
class TrafficController {
private static Set<TrafficListener> listeners = new HashSet<>();
public static void controlTraffic() {
// do stuff
notifyListeners();
}
public static void addTrafficListener(TrafficListener listener) {
listeners.add(listener);
}
public static void removeTrafficListener(TrafficListener listener) {
listeners.remove(listener);
}
private static void notifyListeners() {
for (TrafficListener listener : listeners) {
listener.watchNewTraffic();
}
}
}
不过,目前尚不清楚您要完成什么。关于您的问题的某些内容向我表明您应该考虑使用生产者-消费者模式而不是观察者模式。