Как избавиться от особо случая?
Допустим у меня есть какой-то обработчик задач - JobExecutor, который получает на вход какую-то задачу и набор команд(хуков), которые нужно выполнить до и после выполнения задачи, но есть одна команда, которая в случае, если она успешно проходит, не должна давать запускаться задаче, из-за этого у меня все команды возвращают флаг, должны ли они прервать выполнение задачи, и я хочу избавиться от этого особо случая. Как это сделать без флага?
Ответы (1 шт):
Самый простой способ - просто бросить исключение. А все команды завернуты в общий try блок. Для такого случая можно завести отдельный тип исключения. Теперь с любого уровня можно передать "сообщение". А в catch блоке добавить ещё один блок для этой ситуации.
Второй способ - в каждую задачу передавать некий объект "контекст". И в этом контексте хранить разную полезную информацию - писать ли подробоные логи и так далее. В том числе можно хранить флажок "продолжать далее". Что бы не делать лишней связанности, для этот объект-контекст можно выделить как интрефейс.
Третий способ - сделать один промежуточный класс или интерфейс, который будет отвечать за это. Этот способ просто уберет необходимость дублировать код.