Recientemente me he encontrado con un problema al intentar implementar Model-View-Controller en Swing.Cómo evitar acoplar la Vista y el Controlador en Swing
Tengo una clase de GUI que consta de subpaneles, y esos subpaneles constan de otros subpaneles. Ahora en uno de estos paneles sub-sub hay un JButton. En el ActionListener para este JButton quiero llamar a un método en el controlador. Para hacer esto, necesitaría pasar el controlador profundamente en las entrañas de la GUI al subpanel secundario donde reside JButton. Luego, en este subpanel secundario, tendría que adjuntar un ActionListener al JButton y completar el actionPerformed() llamando al método que quería llamar en el controlador.
Estoy seguro de que todos ven el problema. ¿Hay alguna buena manera de evitar pasar el controlador profundamente en las entrañas de la GUI?
Mi único pensamiento fue convertir el controlador en un singleton para desacoplarlo de la vista, pero he oído que los singleton son generalmente malvados.
Cualquier consejo sobre este asunto sería muy apreciado. ¡Gracias por adelantado!