«Хорошая практика» означает написание кода, который можно понять, использовать повторно и расширить.Иногда быстрое и грязное имеет больше смысла, но код, как правило, живет дольше и сложнее, чем мы ожидаем, и делать это правильно - хорошая практика, даже если это не так.
Ваше главное окно - хорошая идея для начала,Это набор данных, необходимых во многих местах.Необходимость прохождения его «через 9 промежуточных слоев» выглядит неловко, но ясно дает понять, что каждый из этих 9-слойных методов, рассматриваемых как единое целое, действительно нуждается информация в MainWindow.Использование глобальных переменных скрыло бы эту необходимость и стало бы своего рода практической шуткой для любого, кто пытается поддерживать или улучшать код.
Однако MainWindow также создает окна, вкладки и тому подобное.Это не нужно передавать , поэтому я бы создал другой класс для передачи информации.Это упрощает вещи.Нашему будущему специалисту по техническому обслуживанию (это может быть вы), который просматривает вызов с уровня 4 на уровень 5, больше не нужно ломать голову над тем, почему слою 5 необходимо создавать вкладки.Возможно, имеет смысл создать несколько таких классов, чтобы минимизировать объем информации, которая отправляется туда, где она не нужна.
Следующим шагом будет отметить, что объекты, которые на самом деле используют эту информацию, не знают или не заботятся о них.о MainWindow.Со временем они могут привыкнуть к совершенно другим программам или по-разному привыкнуть к этой программе. Информация, которую они получают, может не поступать из MainWindow. Они хотят не экземпляр класса, а экземпляр интерфейса.Переключитесь на интерфейсы, и ваш код станет проще и гораздо более гибким.
Лучше не слишком увлекаться всем этим.Моя точка зрения не в том, что вы должны сделать много работы прямо сейчас.Скорее, вы должны помнить о своем направлении, если ваш проект продолжает идти хорошо.
(Обратите внимание, что открытые поля и статические методы не работают хорошо с интерфейсами Java! Избегайте их.)