Como evitar o acoplamento do View e do Controller no Swing

Eu recentemente me deparei com um problema ao tentar implementar o Model-View-ControllerBalanço.

Eu tenho uma classe de GUI que consiste em sub-painéis, e esses sub-painéis consistem em outros sub-painéis. Agora, em um desses painéis sub-sub existe umJButton. NoActionListener por estaJButton Eu quero chamar um método no controlador. Para fazer isso eu precisaria passar o controlador profundamente nas entranhas da GUI para o sub-sub painel onde oJButton reside. Então, neste painel sub-sub eu precisaria anexar umActionListener aoJButton e preencha oactionPerformed() chamando o método que eu queria chamar no controlador.

Tenho certeza que todos vocês veem o problema. Existe alguma boa maneira de evitar passar o controlador profundamente nas entranhas da GUI.

Meu único pensamento foi fazer com que o controlador fosse um Singleton para desvinculá-lo da visão, mas ouvi dizer que os singletons geralmente são maus.

Qualquer conselho sobre este assunto seria muito apreciado.

questionAnswers(1)

yourAnswerToTheQuestion