Code база засоренных кода, как это:Sad логика по типам
BaseRecord record = // some BaseRecord
switch(record.source()) {
case FOO:
return process((FooRecord)record);
case BAR:
return process((BarRecord)record);
case QUUX:
return process((QuuxRecord)record);
.
. // ~25 more cases
.
}
, а затем
private SomeClass process(BarRecord record) { }
private SomeClass process(FooRecord record) { }
private SomeClass process(QuuxRecord record) { }
Это делает меня очень грустно. Затем каждый раз, когда новый класс происходит от BaseRecord
, мы должны преследовать всю нашу базу кода, обновляя эти операторы case и добавляя новые методы process
. Такая логика повторяется везде, я думаю, слишком много, чтобы добавить метод для каждого и переопределить в классах. Как я могу улучшить это?
Я предполагаю, что вы ищете являются дженериками. –
На самом деле: generics plus interfaces –
Собственно, полиморфизм, или шаблон посетителя –