Image

Imagekolemik wrote in Imageru_java

Category:

Коль пошла такая пьянка...

Прошу уважаемое сообщество покритиковать/обосрать одно моё решение.

Есть некая команда (или набор их), которая выполняет некие действия и возвращает некий результат. Результатов выполнения ограниченное число и их можно разделить на "успешные" и "неуспешные". Результат можно было бы сделать простым enum-ом, если бы в перспективе не стояло неограниченное увеличение/уменьшение количества таких "результатов" всвязи с расширением функциональности.

Я решил сделать не enum, а набор интерфейсов (пока что пустых внутри):
Result <-- OKResult <-- ConcreteResult1
                              <-- ConcreteResult2
            <-- ErrorResult <-- ConcreteError1
                                  <-- ConcreteError2

В этом решении меня смущает, что return в команде часто выглядит так:
           return new ConcreteResult1() {};

Жду ваших яростных комментариев...

PS: linux-style решение в виде кодов возврата меня не устраивает - потому как система модульная и уследить кто и где там прописал код 123, а где 456 - не получится. А обработчик кодов может быть и общий у разных модулей. Кроме того хотелось бы изобразить иерархию для тех обработчиков, которых волнует только OK|NOTOK.