我正在尝试使用事件调度程序来允许模型在更改时通知已订阅的侦听器.事件调度程序接收在调度期间调用的处理程序类和方法名称.演示者订阅模型更改并提供要在更改时调用的Handler实现.
这是代码(对不起,它有点长).
EventDispacther:
package utils;
public class EventDispatcher<T> {
List<T> listeners;
private String methodName;
public EventDispatcher(String methodName) {
listeners = new ArrayList<T>();
this.methodName = methodName;
}
public void add(T listener) {
listeners.add(listener);
}
public void dispatch() {
for (T listener : listeners) {
try {
Method method = listener.getClass().getMethod(methodName);
method.invoke(listener);
} catch (Exception e) {
System.out.println(e.getMessage());
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
模型:
package model;
public class Model {
private EventDispatcher<ModelChangedHandler> dispatcher;
public Model() {
dispatcher = new EventDispatcher<ModelChangedHandler>("modelChanged");
}
public void …
Run Code Online (Sandbox Code Playgroud)