Classe statica contro classe Singleton in C # [duplicato]

5

Ho bisogno di prendere una decisione per un progetto su cui sto lavorando se usare static o singleton.

Dopo aver letto un articolo come questo sono propenso a usare singleton.

Cosa è meglio usare la classe statica o singleton?

Modifica 1: applicazione desktop server client.

Fornisci soluzioni orientate al codice.

    
posta radu florescu 23.03.2012 - 09:33
fonte

3 risposte

8

Il tuo codice sarà più flessibile se utilizzi un singleton.

Il vantaggio è che il codice che usa il singleton non ha bisogno di sapere se è un singleton o un oggetto transitorio. Usare una classe statica significa che devi chiamare esplicitamente i metodi statici. Pensa all'iniezione di dipendenza, per esempio.

Inoltre, singleton, come classe non statica, può ancora implementare un'interfaccia, supportare l'ereditarietà, ecc. Ad esempio, non è possibile ereditare una classe statica e sovrascrivere un metodo virtuale al suo interno.

    
risposta data 23.03.2012 - 09:46
fonte
5

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 .

    
risposta data 23.03.2012 - 10:28
fonte
1

Non hai menzionato se si tratta di un'applicazione Web o di un'applicazione desktop standalone.

Se si tratta di un'applicazione Web, le classi statiche possono creare alcuni problemi importanti in un ambiente concorrente (a causa di dati condivisi), specialmente quando si utilizzano anche variabili statiche e metodi statici.

    
risposta data 23.03.2012 - 09:49
fonte

Leggi altre domande sui tag