Итак, я пытался понять, как лучше всего структурировать свой код, потому что у меня есть интуитивное чувство, что должен быть лучший способ достичь того, чего я хочу, без передачи одного объекта почти каждому классу пользовательского интерфейса вproject.
Проект, над которым я работаю, имеет класс RhythmWheel
, расширяющий JRootPane.Затем конструктор создает все компоненты, которые образуют RhythmWheel.Например, он создает экземпляр ControlPanel
(который расширяет JPanel) и добавляет его к себе.
Однако ControlsPanel
необходимо иметь много знаний о вещах, определенных в RhythmWheels, таких как количество колескоторые в настоящее время выбраны.В настоящее время конструктор для ControlsPanel
принимает RhythmWheel в качестве аргумента, а затем сохраняет ссылку на него.Он использует это для всего, что связано с компонентом, к которому следует добавить JFileChooser
, и в качестве аргумента функции, которая записывает основное состояние приложения в файл XML.
Мне кажется, что это неправильноЯ передаю основной компонент по многим классам.Я подумал о шаблонах проектирования и подумал, что решение этой проблемы может быть синглтоном.Тем не менее, я много раз читал, что синглтоны - это зло и это анти-паттерн.Я думаю, что шаблон MVC мог бы помочь, но я не уверен, как я реализовал бы это в Swing.И совсем недавно я наткнулся на Dependency Injection как возможное решение.
Я немного растерялся относительно того, что мне следует делать, или мне вообще следует что-то делать.Если вы хотите взглянуть на код, над которым я работаю, вы можете увидеть его по адресу https://github.com/vamega/RhythmWheels, поэтому любые советы о том, как поступить, были бы полезны.