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.