Как избавиться от особо случая?

Допустим у меня есть какой-то обработчик задач - JobExecutor, который получает на вход какую-то задачу и набор команд(хуков), которые нужно выполнить до и после выполнения задачи, но есть одна команда, которая в случае, если она успешно проходит, не должна давать запускаться задаче, из-за этого у меня все команды возвращают флаг, должны ли они прервать выполнение задачи, и я хочу избавиться от этого особо случая. Как это сделать без флага?


Ответы (1 шт):

Автор решения: KoVadim

Самый простой способ - просто бросить исключение. А все команды завернуты в общий try блок. Для такого случая можно завести отдельный тип исключения. Теперь с любого уровня можно передать "сообщение". А в catch блоке добавить ещё один блок для этой ситуации.

Второй способ - в каждую задачу передавать некий объект "контекст". И в этом контексте хранить разную полезную информацию - писать ли подробоные логи и так далее. В том числе можно хранить флажок "продолжать далее". Что бы не делать лишней связанности, для этот объект-контекст можно выделить как интрефейс.

Третий способ - сделать один промежуточный класс или интерфейс, который будет отвечать за это. Этот способ просто уберет необходимость дублировать код.

→ Ссылка