Documente Academic
Documente Profesional
Documente Cultură
In aceasta
categorie se incadreaza pattern-urile Singleton si Factory.
Structural Patterns sunt pattern-uri ce simplifica design-ul aplicatiei prin gasirea unei metode de a defini
relatiile dintre entitati. In aceasta categorie se incadreaza pattern-ul Decorator.
Behavioral Patterns sunt pattern-uri ce definesc modul in care obiectele comunica intre ele. In aceasta
categorie se incadreaza pattern-urile Command, Visitor si Observer.
acesta este Behavioral pentru ca modific interaciunea dintre componente, mai exact felul n care
se efectueaz apelurile.
Structura
Ideea principala este de a crea un obiect de tip Command care va retine parametrii pentru comanda.
Comandantul retine o referinta la comanda si nu la comandat. Comanda propriu-zisa este anuntata
obiectului comanda (de catre comandant) prin executia unei metode specificate asupra lui.
Obiectul Command este apoi responsabil de trimiterea (dispatch) a comenzii la obiectele care o
indeplinesc (comandati).
Tipuri de componente (roluri):
Invoker - comandantul
poate menine, dac e cazul, o list a tutoror comenzilor aplicate pe obiectul (obiectele)
comandate. Este necesar reinerea acestei liste de comenzi atunci cnd implementm un
comportament de undo/redo al comenzilor.
n cazul implementrii unor aciuni undoable adugm metode pentru undo i/sau redo.
n locul variabilelor globale. Singleton este preferat variabilelor globale deoarece, printre
altele, nu polueaz namespace-ul global cu variabile care nu sunt necesare.
Din punct de vedere al design-ului i testarii unei aplicaii de multe ori se evit folosirea acestui
pattern. De exemplu dac avem nevoie sa meninem o referin ctre un obiect n mai multe clase,
putem sa l facem Singleton i s obinem acel obiect n fiecare component n care avem nevoie de
el sau ca sa facem codul mai curat i cu un flow mai uor de urmrit, s l instaniem doar ntr-un
singur loc i s l transmitem ca argument.
Implementare
Aplicarea pattern-ului Singleton const n aplicarea unei metode ce permite crearea unei noi instan e
a clasei dac aceasta nu exista deja. Daca instana exist deja, atunci ntoarce o referin ctre acel
obiect. Pentru a asigura o singur instaniere a clasei, constructorul trebuie s fie private, iar instana
s fie oferit printr-o metod static, public.
Patternul Factory face parte din categoria Creational Patterns si ca atare rezolva problema crearii
unui obiect fara a specifica exact clasa obiectului ce urmeaza a fi creat. Acest lucru este implementat prin
definirea unei metode al carei scop este crearea obiectelor. Metoda va avea specificat ca parametru de
intors in antet un obiect de tip parinte, urmand ca, in functie de alegerea programatorului, aceasta sa
creeze si sa intoarca obiecte noi de tip copil.
Design Pattern-ul Observer definete o relaie de dependen 1..* ntre obiecte astfel nct cnd un
obiect i schimb starea, toi dependenii lui sunt notificai i actualizai automat. Folosirea acestui
pattern implic existena unui obiect cu rolul de subiect, care are asociat o list de obiecte
dependente, cu rolul deobservatori, pe care le apeleaz automat de fiecare dat cnd se ntmpl o
aciune.
Acest pattern este de tip Behavioral (comportamental), deorece faciliteaz o organizare mai bun a
comunicaiei dintre clase n funcie de rolurile/comportamentul acestora.
Observer se folosete n cazul n care mai multe clase(observatori) depind de comportamentul unei
alte clase(subiect), n situaii de tipul:
o clas implementeaz/reprezint logica, componenta de baz, iar alte clase doar folosesc
rezultate ale acesteia (monitorizare).
o clas efectueaz aciuni care apoi pot fi reprezentate n mai multe feluri de ctre alte clase
Scop
Ofer un surogat sau nlocuitor pentru un obiect, prin care se controleaz accesul la acel obiect.
Motivatie
Creare/initializare la cerere a obiectelor
Aplicabilitate
Substitut pentru deprtat, ambasador
Substitut virtual
Substitut protector
Referint deteapt
Indicator detept
ncrcarea unui obiect persistent la prima accesare
Asigurearea exculderii mutual
Tipuri de obiecte proxy:
Cache Proxy: salveaz resurse memornd
rezultate temporare
Count Proxy: face i alte operatii nainte/dup apelarea subiectului real
Protection Proxy: controleaz accesul la obiectul
real
Remote Proxy: reprezentant local al unui obiect
aflat la o alt adres
Virtual Proxy: creeaz obiecte la cerere (cnd
este nevoie de ele)