工厂在这里只增加了样板。使用方法引用可以完成相同的事情:传递
Event
的构造函数转换为
Consumer
的构造函数。使用
Supplier
这样做的功能接口。
public class Consumer<T extends Event> {
private final Supplier<T> eventConstructor;
public Consumer(final Supplier<T> eventConstructor) {
this.eventConstructor = eventConstructor;
}
private void someMethod() {
final T event = eventConstructor.get();
}
}
您可以从
Thread
以下内容:
class Thread<T extends Event> {
private Consumer<T> consumer;
public Thread(final Supplier<T> eventConstructor) {
this.consumer = new Consumer<>(eventConstructor);
}
}
样品用途:
Thread<Event1> thr = new Thread<>(Event1::new);
如果某些事件具有构造函数参数,例如:
Thread<Event2> thr2 = new Thread<>(() -> new Event2("some default"));