有兩類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