Io e un collega stanno avendo un dibattito:Singleton design di classe - oggetto null
abbiamo una classe Singleton che viene utilizzato in più posti nel nostro codice di base.
In origine, la classe è stata progettata in modo tale che si potrebbe ottenere l'oggetto di classe, ma che oggetto non sarebbe completamente inizializzato.
Con questo voglio dire:
mySingleton.getInstance().SomeMethod();
SomeMethod
causerebbe errori perché la classe non è stata inizializzata. Per la classe per funzionare correttamente, questo dovrebbe accadere:
mySingleton.getInstance().initObject();
mySingleton.getInstance().SomeMethod();
In ogni modo, il dibattito che ho è che il costruttore (chiamato con la prima istanza ottenere) dovrebbe chiamare initObject
in modo che nessun errore possono essere gettati.
Cosa ne pensi?
mio collega piace l'altro modo per cui sa quando la classe è sempre inizializzato. (per esempio chiama initObject
a 1 riga di codice specifica e spera che nient'altro abbia bisogno di prima).
In molti casi, la * migliore * soluzione è semplicemente non utilizzare un Singleton in primo luogo - invece, utilizzare un normale oggetto di istanza e semplicemente iniettare l'istanza in classi che ne hanno bisogno (o passarla manualmente nel costruttore o alcuni di questi, o utilizzando un framework IoC). –