Sono d'accordo con tutto ciò che ha detto Martin, +1 a quello. Per aggiungere un po ', considera anche che oggi la tua applicazione ha un oggetto condiviso globale e domani decidi che vuoi avere più di una istanza.
Se usi un singleton, tutto ciò che devi fare è rendere pubblico il tuo costruttore. Ma se decidi di utilizzare una classe statica, la modifica dovrebbe essere molto più intrusiva.
Inoltre, se decidi di aggiungere test unitari al tuo codice, la sostituzione di un'istanza singleton con una falsa è molto più semplice (modifica in un unico posto) rispetto al dover gestire un sacco di funzioni statiche che condividono tutti i dati globali .