Singleton - stivă overflow în rusă

Un exemplu rău IMHO. În portaluri reale - este o grămadă de link-uri la diferite baze de date. Și, în general, că un Singleton într-adevăr la fel ca statică - singurul rău în cazul în care se dovedește începe brusc trișor începe clasa staticii la instantia, și împinge să nu-proprietăți / metode de statica: dar se poate face doar beginnera. Și dacă apar o serie de metode statice în Singleton mâinile de aceeași beginnera - nimic nu este teribil. - Goncharov Alexander, la data de 25 '16 august la 17:01







Singleton - unul dintre cele mai ușoare, dar în același timp extrem de importante modele de design. Pentru ceea ce este necesar, a fost deja răspuns. Principala implementare este indicată de dvs., dar chiflele pot fi înșurubate de toată lumea. De exemplu, în C ++, puteți crea o singură metodă șablon de șablon Singleton. și apoi face orice singleton de la orice clasă existentă.

răspunsul dat 22 Mar 12 la 10:27 am

Faptul este că Singleton vă permite să creați unul singur.

În consecință, toate clasele în care se utilizează obiectul singleton utilizează același obiect. Cu aceleași date.

Să luăm un exemplu din răspunsul tovarășului @knes despre conexiunea la baza de date. Dacă conexiunea la baza de date este stocată în constructorul singleton, atunci toate clasele care utilizează baza de date prin singleton utilizează aceeași conexiune.

Acelasi lucru, daca myClass este un singleton:

Toate cele de mai sus sunt doar cea mai clară ilustrare a mecanismului în opinia mea. Avantajele și dezavantajele unui singleton sunt o altă poveste.







răspunsul dat 22 martie '12 la 7:56

> Un alt exemplu: Adăugați o variabilă arbitrară la singleton. Apoi adăugați geter și seter pentru ea. E simplu. Trucul este că putem specifica valoarea acestei variabile într-o singură clasă și o putem obține în cealaltă fără a trece un obiect singleton între clase. O am fără singurătate. - exec Mar 22 '12 la 8:01

copiați acest exemplu simplu, rulați-l, și veți înțelege că o clasă de statică, împreună cu variabilele sale statice nu este duplicat de operator nou. Da, cel puțin zece duplicate - în același timp - variabile statice vor rămâne.

Doriți să utilizați o clasă statică pentru a lucra cu baza de date - obțineți o variabilă statică variabilă DB_handler înăuntru. Este necesar să lucrați cu mai multe conexiuni (mai multe baze de date) - obțineți unul dacă este necesar. Puteți chiar să construiți o gamă statică. De ce nu? Va fi nevoie să scăpați prea mult - rescrieți clasa. Ie copii ale claselor statice nu diferă deloc (atunci când sunt făcute de noul operator), până când în ele apar cel puțin o variabilă non-statică. Adevărat, și după aceasta vor fi diferite numai această variabilă Nonstatic. Cu toate acestea, în același timp, este posibilă gestionarea acestei variabile numai din clasa fabricată.

Este vorba despre asta și întrebarea a fost - "DE CE?". Răspunsul este simplu - da, FOREIGN :)

Probabil, există sarcini care au nevoie pentru a începe o instanță de Singleton ,. „Dar, în cazul în care nu au existat plângeri (bine, nu ia ceva), atunci nimic nu va fi luat și totul va fi liniștit și pașnic. Dar, ca un fel de clasă statică va exista chiar atunci când este posibil să nu fie necesară. oh, cât de teribil va mânca de memorie. „În general, într-un fel nu pot veni doar cu un curs de o astfel de problemă să-l folosească în loc de a crea o clasă de clase statice.

Și aici, de exemplu, nu văd nici o diferență între Singleton și Heap simplu. În general, clasele statice (cu variabile statice) sunt, de asemenea, foarte convenabile, deoarece oferă variabile "globale" pentru orice domeniu de aplicare. Iar managerul pentru baza de date este un exemplu viu.

răspuns dat la 22 martie '12 la ora 14:52







Articole similare

Trimiteți-le prietenilor: