Implementazione dei campi Java Singleton

0

Ho singleton in Java e mi sono reso conto che potevo rendere statici i suoi campi e che avrebbe funzionato allo stesso modo dei normali campi di istanza.

Ci sarebbe una differenza di prestazioni / ottimizzazione? In tal caso, cosa sarebbe risultato migliore? Esiste un modo preferito per implementare i campi Singleton? (ancora, sto parlando di campi, non di metodi)

    
posta Lukáš Rutar 19.04.2014 - 11:52
fonte

2 risposte

1

Ricorda che statico non significa univoco nell'intera applicazione. È solo univoco per il classloader. Se si sta lavorando con più programmi di caricamento classi in un server applicazioni, ad esempio ci saranno più valori per lo stesso campo.

Invece dell'approccio statico, dovresti dare un'occhiata all'iniezione di dipendenza che ti darebbe quello di cui hai bisogno senza i problemi dei singleton e degli attributi statici.

    
risposta data 20.05.2014 - 09:51
fonte
0

Sì, potrebbe esserci una differenza di prestazioni. Ad esempio, se si scrivesse una classe per un Logger e in tutto il runtime dell'applicazione non si fosse mai registrato nulla, non sarebbe stato necessario inizializzare il registratore. Se hai scritto questa classe come static , la inizializzi all'inizio del programma, indipendentemente dal fatto che tu la usi. Se dovessi crearlo come un singleton, potresti eseguire inizializzazione pigra , che risolve questo problema.

In termini di "modo preferito", da quello che ho sentito, è preferibile implementarlo come Singleton o simile se il tuo oggetto ha stato e statico se non specificato. Questo per migliorare la testabilità, perché testare un oggetto static con stato è un problema nel calcio e non è affidabile. Ma questo è per una domanda diversa.

Nel tuo caso, con i campi, la risposta è sicuramente andare con un singleton a meno che tu non abbia una valida ragione per fare diversamente.

    
risposta data 20.04.2014 - 07:02
fonte

Leggi altre domande sui tag