Jak uniknąć sprzężenia widoku i kontrolera w Swing

Niedawno natknąłem się na problem z implementacją kontrolera Model-ViewHuśtawka.

Mam klasę GUI, która składa się z podpaneli, a te podpanele składają się z innych podpaneli. Teraz w jednym z tych paneli podrzędnych jestJButton. wActionListener dla tegoJButton Chcę wywołać metodę w kontrolerze. Aby to zrobić, musiałbym przekazać kontroler głęboko do wnętrza GUI do sub-sub panelu, gdzieJButton rezyduje. Następnie w tym pod-panelu musiałbym dołączyćActionListener doJButton i wypełnijactionPerformed() wywołując metodę, którą chciałem wywołać w kontrolerze.

Jestem pewien, że wszyscy widzicie problem. Czy jest jakiś dobry sposób na uniknięcie przepuszczania kontrolera w głąb GUI.

Moją jedyną myślą było sprawienie, aby kontroler stał się Singletonem, który oddzieliłby go od widoku, ale słyszałem, że Singleton jest zazwyczaj zły.

Wszelkie porady w tej sprawie byłyby najbardziej doceniane.

questionAnswers(1)

yourAnswerToTheQuestion