C++Singleton Design Pattern


Osservazioni

Un Singleton è progettato per garantire che una classe abbia solo un'istanza e fornisca un accesso globale ad essa. Se si richiede solo un'istanza o un comodo punto di accesso globale, ma non entrambi, prendere in considerazione altre opzioni prima di passare al singleton.

Le variabili globali possono rendere più difficile ragionare sul codice. Ad esempio, se una delle funzioni di chiamata non è felice con i dati ricevuti da un Singleton, è necessario rintracciare ciò che inizialmente fornisce i dati non validi di Singleton.

I singleton incoraggiano anche l' accoppiamento , un termine usato per descrivere due componenti del codice che sono uniti, riducendo così ogni misura di autocontenimento di ogni componente.

I single non sono compatibili con la concorrenza. Quando una classe ha un punto di accesso globale, ogni thread ha la possibilità di accedervi che può portare a deadlock e condizioni di gara.

Infine, l'inizializzazione pigra può causare problemi di prestazioni se inizializzata nel momento sbagliato. La rimozione dell'inizializzazione pigra rimuove anche alcune delle caratteristiche che rendono Singleton interessante in primo luogo, come il polimorfismo (vedi Sottoclassi).

Fonti: Pattern di programmazione di gioco di Robert Nystrom

Singleton Design Pattern Esempi correlati