В моей кодовой базе есть шаблон, который выглядит примерно так: мы обрабатываем сообщения из очереди и затем передаем это сообщение в следующую очередь. До сих пор использовался тот случай, когда мы обрабатываем и создаем сообщения одного типа.
public interface Processor<T> {
T process(T thing);
}
Этот вариант использования перешел к обработке и производству другого типа. Кроме того, нам может понадобиться обработать один тип и создать ряд других.
Так что-то вроде:
public interface NewProcessor<I, O> {
O process(I thing;)
}
и в будущем, вероятно, потребуется что-то вроде
public interface FutureProcessor<I, O1, O2> { //potentially N number of O
Pair<O1, O2> process(I thing);
}
Мой вопрос: есть ли способ express этот очиститель, чем три отдельных класса? Есть ли здесь хорошая известная иерархия, которую я мог бы использовать?
У нас есть абстрактный пользователь процессора первого типа, который я предпочел бы не переписывать каждый раз, когда мы добавляем новый процессор. Сегодня он делает что-то вроде этого:
public abstract AbstractModule<T> {
private Processor<T> processor;
public AbstractModule(Processor<T> processor) {
this.processor = processor;
}
T runModule(T input) {
// abstract validateInput(input);
T result = processor.process();
// record results
return result;
}
}
Будем благодарны за любые известные шаблоны или предложения о том, как это сделать!