有两个实现了Base接口的类X和Y。 有一个接口负责处理每种类型的对象。
interface Base {
}
class X implements Base {
}
class Y implements Base {
}
interface XProcessor {
void process(X object);
}
interface YProcessor {
void process(Y object);
}
但这种方法的缺点是我必须为每种类型的对象(X,y等)暴露一个接口,如果有许多这样的对象,我最终将暴露太多接口。我想通过仅公开一个处理基本类型对象的接口来处理此问题。
interface Processor<E extends Base> {
void process(E object);
}
实现者编写自己的实现来处理类型为 X 的对象。
class XProcessor implements Processor<X> {
void process(X object) {
//do something
}
}
这种方法的问题在于,当我需要在运行时调用process方法时,我不知道应该传递哪种类型的对象给处理器,因为在运行时我无法确定处理器的类型。
void process(Processor p) {
p.process(??);
}
有没有更好的方法处理这个问题?