Ну, это зависит от текущего состояния вашего кода.
Я бы попробовал следовать этому:
1) попытаться извлечь аналогичный проверочный код и, возможно, упаковать его как отдельные функции / служебные модули и т. Д., Просто вызовите функцию для проверки, не помещайте проверочный код в проверяющий
2) при этом вы сможете создать главный валидатор в виде набора валидаторов, подэтапов проверки пакета в классах действий и создать большой валидатор, который запустит все эти маленькие шаги и завершится неудачно, если одна из подзадач завершается неудачно (но сначала оцените, не является ли это избыточным в вашем случае, может быть быстрее просто завершить рефакторинг здесь, если ваша проверка не так сложна)
3) затем с этим шаблоном, если ваша логика проверки часто меняется, вы можете попытаться поместить конфигурацию композита за пределы кода. ЕСЛИ у вас есть доступ к инструментарию инверсии управления, например, Spring Framework, вы можете создать свой композит из конфигурации XML, а не из кода. Это имеет преимущество, так как изменение требований к проверке не требует перестройки проекта для внесения изменений, и он отделил бизнес-логику от кода.