有两类X,Y,它实现一个Base接口 有这需要处理每个类型通用接口VS接口,用于每种类型的
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
}
}
的问题这种方法是当我不得不调用方法进程时,我不知道应该将哪种类型的对象传递给处理器,因为在运行时我无法确定该处理器的类型
void process(Processor p) {
p.process(??);
}
是否有更好的方法来处理这个问题?
这里的问题是:为什么你真的需要在运行时知道类?如果你不能概括这个过程,那么就和每个课程一起工作。 –
这可以通过一个'Factory'来处理不同的'Processor's吗? – tredontho
访客模式。 – Riga