Коль пошла такая пьянка...
Прошу уважаемое сообщество покритиковать/обосрать одно моё решение.
Есть некая команда (или набор их), которая выполняет некие действия и возвращает некий результат. Результатов выполнения ограниченное число и их можно разделить на "успешные" и "неуспешные". Результат можно было бы сделать простым enum-ом, если бы в перспективе не стояло неограниченное увеличение/уменьшение количества таких "результатов" всвязи с расширением функциональности.
Я решил сделать не enum, а набор интерфейсов (пока что пустых внутри):
Result <-- OKResult <-- ConcreteResult1
<-- ConcreteResult2
<-- ErrorResult <-- ConcreteError1
<-- ConcreteError2
В этом решении меня смущает, что return в команде часто выглядит так:
return new ConcreteResult1() {};
Жду ваших яростных комментариев...
PS: linux-style решение в виде кодов возврата меня не устраивает - потому как система модульная и уследить кто и где там прописал код 123, а где 456 - не получится. А обработчик кодов может быть и общий у разных модулей. Кроме того хотелось бы изобразить иерархию для тех обработчиков, которых волнует только OK|NOTOK.
Есть некая команда (или набор их), которая выполняет некие действия и возвращает некий результат. Результатов выполнения ограниченное число и их можно разделить на "успешные" и "неуспешные". Результат можно было бы сделать простым enum-ом, если бы в перспективе не стояло неограниченное увеличение/уменьшение количества таких "результатов" всвязи с расширением функциональности.
Я решил сделать не enum, а набор интерфейсов (пока что пустых внутри):
Result <-- OKResult <-- ConcreteResult1
<-- ConcreteResult2
<-- ErrorResult <-- ConcreteError1
<-- ConcreteError2
В этом решении меня смущает, что return в команде часто выглядит так:
return new ConcreteResult1() {};
Жду ваших яростных комментариев...
PS: linux-style решение в виде кодов возврата меня не устраивает - потому как система модульная и уследить кто и где там прописал код 123, а где 456 - не получится. А обработчик кодов может быть и общий у разных модулей. Кроме того хотелось бы изобразить иерархию для тех обработчиков, которых волнует только OK|NOTOK.
