Cómo evitar el acoplamiento de la vista y el controlador en Swing

Recientemente he encontrado un problema al intentar implementar Model-View-Controller enOscilación.

Tengo una clase de GUI que consiste en subpaneles, y esos subpaneles consisten en otros subpaneles. Ahora en uno de estos sub-sub paneles hay unaJButton. En elActionListener para estoJButton Quiero llamar a un método en el controlador. Para hacer esto, necesitaría pasar el controlador a lo profundo de las entrañas de la GUI al sub-panel secundario donde se encuentra elJButton reside Entonces, en este sub-sub panel necesitaría adjuntar unActionListener alJButton y completa elactionPerformed() llamando al método que quería llamar en el controlador.

Estoy seguro de que todos ustedes ven el problema. ¿Hay alguna buena manera de evitar pasar el controlador a las entrañas de la GUI?

Mi único pensamiento era hacer que el controlador fuera un Singleton para desacoplarlo de la vista, pero he oído que los de Singleton suelen ser malos.

Cualquier consejo sobre este asunto sería muy apreciado.

Respuestas a la pregunta(1)

Su respuesta a la pregunta