Есть два класса 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..), и если таких объектов много, я бы в конечном итоге выставил слишком много интерфейсов. Я думал, что справлюсь с этим, предоставив только один интерфейс, который занимается обработкой объектов типа Base.
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
? - person tredontho   schedule 08.10.2013