Всё правильно делаете. Только если у вас приложение из консоли запускается я бы предложил использовать
Commons CLI для парсинга входных аргументов.
Не вижу проблемы валидации в конструкторе (
например), но если очень хочется изменить — введите статичный фактори метод, в который помесьтите всю валидацию, а конструктор сделайте приватным.
Я бы, наверное, сделал бы так: Input в виде Commons CLI Options, далее преобразование его в класс-структуру настройки (не зависимой от CLI, в случае режима embedded такде заполнение этой структуры) без валидации, статичный фактори метод с этой настройкой, где происходит вся валидации и выставление параметров бизнес объекта.