Должна ли логика в основном классе быть минимальной, только для создания экземпляров других специализированных классов и выполнения всех задач оттуда?
Да. Метод main
и окружающий его класс в идеале должны использоваться только в качестве точки входа для запуска программы. Простое существование окружающего класса - это просто артефакт того, как составляются Java-программы ( все должно быть внутри некоторого класса), и нет никаких причин, по которым он должен содержать другие вещи в дополнение к main
метод (но, безусловно, есть причины, по которым он не должен).
Когда вы разделяете интересные классы (те, которые составляют реальную программу), вы открываете двери для всех видов гибкости. Возможно, некоторые из этих классов могут быть использованы в некоторых других проектах. Возможно, однажды вы захотите заменить некоторые из них лучшими реализациями. Возможно, вы найдете лучший порядок создания всех этих классов - просто поменяйте местами несколько строк. Или как насчет выполнения длительных загрузок и создания экземпляров в параллельных потоках? Просто оберните некоторые из них подходящим исполнителям. Удачи, пробуя это с основным классом в 1000+ линий.
Такая гибкость важна для всего, кроме, может быть, 100-строчных элементарных примеров, прототипов и тому подобного. Но, учитывая, что даже небольшие инструменты имеют тенденцию к росту, почему бы не сделать это правильно с самого начала?