Oggetti singoli creati in modo che ci possa essere solo 1 istanza in un dato momento e può essere utilizzata a livello di applicazione.
Gli oggetti che gestiscono cose come i pool di connessioni sono un buon candidato per essere Singletons;
- Vuoi solo 1 istanza nell'intera applicazione
- devi poterlo accedere da diverse parti dell'applicazione
- i dati che contiene devono essere persistenti anche quando nessun altro oggetto lo sta attualmente puntando (utile quando si desidera riutilizzare oggetti che sono costosi da inizializzare).
Una classe riempita con solo metodi statici non è qualcosa che di solito è pensato per essere inizializzato come un oggetto. È più simile a un wrapper per i metodi statici in esso.
Un esempio di ciò che uso frequentemente è una classe di utilità con metodi che eseguono attività ripetitive che prendono parametri, esegue un calcolo con loro / formatta loro / etc. e quindi restituisce il risultato, senza utilizzare campi o metodi esterni (o almeno non statici).
Non inizializzo mai una classe di utilità, utilizzo solo i metodi statici per tutti i metodi ripetitivi.
Questo è il modo in cui tendo ad usare le classi Singletons e statiche (con metodo), non sono sicuro che confermi gli standard "ufficiali" ...