Il singleton

Ciao ragazzi, vorrei farvi una domanda un po’ “generica”, non direttamente collegata a Yii.

Stavo cercando di capire il senso dell’utilizzo del Singleton, essendomi avvicinato da poco alla OOP.

Il singleton ha lo scopo di garantire che di una determinata classe venga creata una e una sola istanza, e di fornire un punto di accesso globale a tale istanza.

Quello che mi chiedo è: perché? Quali sono i vantaggi dell’utilizzo di questo pattern?

eviti di avere N copie della stessa cosa che girano (quindi aumentando le performance) ed eviti sopratutto di cambiare valori al suo interno senza accorgertene… in base a come implementi il singleton potresti addirittura loggare il nome del file in cui aggiorni un suo attributo.

è in sostanza l’alternativa più efficiente e pulita ad una variabile globale.

Un utilizzo pratico del pattern singleton può riguardare la connessione al database. Quando inizializzi la classe la prima volta, assegni ad una variabile statica della classe l’handle della connessione. Le volte successive, controlli se questo handle esiste, altrimenti lo ricrei.

Questo, per esempio, ti permette di non aprire più di una connessione alla volta. Se non sono stato chiaro, posso provare a postarti un esempio di codice.

In esempio semplice di implementazione e 'la funzione loadModel del controller.

Carica il model unasola volta, qundi se per caso chiami piu’ volte la loadModel non farai accessi multipli al database.