Тема: Реалізація MVC патерну в нескладному desktop додатку на Java
Доброго дня! Я новачок в Java і вирішив написати свій перший додаток, в якому буде використовуватися MVC патерн.
Ідея проста: є база даних автомобілів (на справі просто ArrayList). Зліва у вікні знаходиться меню з трьома кнопками: переглянути всі машини, додати машину, видалити машину. Справа відображаються панелі, які відповідають діям кнопок (панель з висновком всіх машин, панель з формою додавання машини і видалення відповідно).
Проблема виникла ось в чому: як правильно організувати зв'язок Control складової з View і Model.
У коді я створив окремо два класи: ViewMain, який інкапсулює в собі всі елементи GUI, і ModelMain, який інкапсулює базу даних та інші дані. Екземпляри класів створюються відразу після входу в програму. Contol ж поки реалізований у вигляді класів, які відповідають за окремі компоненти View (за меню, панелі та інші).
Коли справа дійшла до Control частини, то виникли проблеми:
1) Для кнопок я просто створив екземпляр класу MenuControls (відповідає за зміну панелей в правій частині, яка відбувається при натисканні кнопок) в класі, який відповідає за меню MenuView. Тут все працює нормально і код виглядає начебто пристойно тому, що зв'язок виходить тільки між View і Control. Чи правильне таке рішення в цьому випадку?
2) При написанні ж контрола, який би брав базу з машинами і виводив інформацію на екран в праву панель, моя голова почала кипіти від того, як правильно підступитися до Model частини з Control, і передати це в View.
Єдине, що спало на думку, так це при створенні екземпляру ModelMain, передавати його в ViewMain. Але ця ідея відразу здалась поганою, оскільки, глибина інкапсуляції не надто маленька і доведеться його просто бездумно передавати з контейнера в контейнер, поки він не дійде до місця призначення. Від використання якихось статичних елементів так само відразу відмовився, так як, наскільки розумію, їх варто використовувати по мінімуму і в спеціальних випадках.
Буду дуже вдячний за будь-яку допомогу і поради!