Penso che la difficoltà si presenti perché hai gli oggetti di visualizzazione (Swing) che memorizzano lo stato dell'applicazione. In un'applicazione desktop, so che il controller e la vista a volte vengono unificati parzialmente o interamente, ma il modello dovrebbe essere ancora separato.
Durante lo sviluppo di tali applicazioni, mi piace utilizzare il seguente approccio:
- Alcuni codici (che potrebbero essere principali, un listener di eventi, qualunque cosa) attivano una nuova vista nell'esistenza.
- Una factory di qualche tipo costruisce gli elementi MVC:
- Visualizza: preferisci utilizzare le classi Swing standard e assemblarle insieme.
- Modello: crea un oggetto per gestire uno di due tipi di dati. Uno, stato persistente che è stato probabilmente trasmesso dal controllore allegato. Due, stato che viene utilizzato da questa nuova vista (oggetti temporanei che possono essere condivisi).
- Controller: costruisce più ascoltatori e li collega agli oggetti vista. Avranno anche in genere riferimenti agli oggetti del modello in modo che possano agire su di essi.
- Avanti, collega tutto. Aggiungi ascoltatori alla vista. Usa gli oggetti comuni tra di loro quando appropriato, in modo che possano vedere gli stessi dati e aggiornare la vista secondo necessità.
Credo che tu stia facendo la domanda sbagliata: usare l'approccio sopra può essere in grado di risolvere il tuo dilemma (non posso dire con certezza, non vedo il tuo codice).
Ho anche altamente consiglio di evitare variabili globali, stato statico, ecc. Mi piace creare Context
oggetti che contengono stato applicabile all'intera applicazione o porzione di esso che normalmente sarebbe una "variabile globale "a uno sviluppatore meno esperto. Questo contesto contiene solo le variabili che sono veramente necessarie per essere condivise tra gli oggetti, come il file corrente (o l'astrazione del file), l'utente registrato o altro stato che può influenzare legittimamente tutti gli oggetti in un'applicazione o in un modulo.
Ridurre l'accoppiamento in questo modo rende i singoli elementi più riutilizzabili. Mentre il codice può essere più prolisso e (inizialmente) difficile da seguire, lo semplifica e lo rende più semplice alla fine. Ricorda i tuoi principi SOLID .