model de design - single - (model Singleton)

Sunteți aici: Pagina principală - PHP - Bazele PHP - model de design "Singleton" (model Singleton).

model de design - single - (model Singleton)

Astăzi vreau să fac din modelul de proiectare „singuraticul.“ care este foarte des folosit în programarea orientată pe obiecte.

model de design „Singleton“ model Singleton sau trebuie să nu am avut o mulțime de obiecte similare, și de a folosi întotdeauna doar unul. Ca un exemplu, o clasă de a lucra cu baza de date.

clasa DB protejat $ db;

funcția publică __construct () $ this-> db = new mysqli ($ gazdă, ghidul $, $ treci, baza de date $);
>

funcția publică get () <>
set de funcția publică () <>
funcția publică del () <>
>

$ DB1 = new DB ();
$ Db2 = new DB ();

Avem 2 proprietăți $ db1 și $ db2. și apoi cineva să nu știe că există un astfel de obiect va crea un al treilea, etc. Acesta este un efect foarte negativ asupra performanței și lizibilitatea, și poate eșua în acest caz, deoarece pe găzduirea unui număr limitat de conexiuni la baza de date.

Pentru a rezolva această problemă, și a fost inventat de model Singleton.

clasa DB protejat $ db;
static $ exemplu privat = nul;

Funcția privată __construct () $ this-> db = new mysqli ($ gazdă, ghidul $, $ treci, $ bază de date);
>

Funcția privată __clone () <>

Funcția statică getInstance () în cazul în care (auto :: $ exemplu == null) auto :: $ exemplu = auto noi ();
>
a reveni auto :: $ instanță;
>
>

$ Db = new DB (); // eroare

$ Db = DB :: getInstance ();
$ Db2 = DB :: getInstance ();
$ DB3 = DB :: getInstance ();

Pentru a crea un obiect în mod obișnuit a fost imposibil, vom face constructorul nostru este privat. dar, de asemenea, nu uitați despre faptul că obiectele pot fi donate și aproape ca metodă __clone. În continuare vom crea o proprietate de $ instanță statică. care, în mod implicit este nul. Acum, creați o metodă getInstance statică (). care verifică dacă proprietatea noastră nulă statică. Dacă da, atunci vom crea o instanță a obiectului nostru și returnați-l, și, dacă nu, atunci doar reveni. Astfel, vom fi mereu una și aceeași instanță, cât de mulți dintre ei nu am creat. Utilizați este foarte simplu: atribui o valoare unei variabile care returneaza metoda getInstance statica (). clasa DB. și vom continua să lucreze ca de obicei cu obiectul.

Deci, acum știi ce model Singleton. și, cel mai important, de ce este necesar și în cazul în care să-l aplice.

Recomanda acest articol unui prieten:

Daca ti-a placut site-ul, link-ul pentru a-l (pe site-ul dvs., pe forum, în contact)

Se pare ca acest lucru:

  • referință BB-cod ​​pentru indexul (de exemplu, puteți pune-l în semnătura):