Il pattern Singleton è solitamente il migliore quando un'istanza deve essere unica nel suo utilizzo attraverso l'intero programma . Se stai usando swing, probabilmente non è una buona idea usare singleton a meno che swing usi già il pattern Singleton per darti l'istanza in primo luogo (sconfiggendo così lo scopo di scriverlo tu stesso). In generale, il singleton dovrebbe essere evitato, perché in un certo senso è come usare le variabili globali in C ++. Avere una singola istanza disponibile in tutto il tuo programma significa potenzialmente perdere la portata di dove viene utilizzata e in quale stato dovrebbe essere. In definitiva, aggiunge confusione nel tuo programma e se potrebbe essere evitato condividendo un'istanza, meglio farlo.
Quello che probabilmente vorrai fare è riutilizzare la stessa istanza di Tree, e quell'effetto che puoi ottenere semplicemente passandolo come parametro a qualunque frame tu stia cercando di creare. L'oggetto Tree può definire la propria vista e, quindi, utilizzando una singola istanza di Tree, si garantisce anche che si stia utilizzando una singola istanza della sua vista (supponendo che non si cambi in seguito).