Extras din notiță
Definiţi o dependenţă unul-la-mai-mulţi între obiecte astfel încât atunci când un obiect îşi schimbă starea, toate dependenţele sale sunt anunţate şi actualizate automat
-Pot exista mulţi observatori
-Fiecare observator poate reacţiona diferit la aceeaşi notificare
-Sursa de date (subiectul) trebuie să fie cât mai decuplat posibil de observator(i)
-Cuplaj minimal şi abstract între subiect şi observatori
-Suport pentru comunicare de tip difuzare (“broadcast”)
--Modificări neaşteptate
Întrucât observerii nu ştiu unul de existenţa celuilalt, pot apare modificări incorecte, în cascadă
Metoda Factory
-Defineşte o interfaţă pentru crearea unui obiect, dar lasă subclasele să decidă ce clasă să instanţieze.
-Metoda Factory permite unei clase să defere instanţierea subclaselor
Cunoscut şi ca Constructor Virtual
Aplicabilitate
-O clasă nu poate anticipa clasa obiectelor pe care trebuie să le creeze
-O clasă doreşte ca subclasele sale să specifice obiectele pe care le creează
-Clasele delegă responsibilitatea uneia sau mai multor subclase ajutătoare
Elimină legarea între clasele specifice aplicaţiei din cod
-codul de creare foloseşte doar interfaţa clasei Product
Facilitează derivarea
-subclasele pot astfel modifica produsul creat
Poate conecta ierarhii paralele de clase
-lasă clienţii să apeleze FM
--Clienţii ar trebui să deriveze din Creator doar pentru a crea un anumit obiect ConcreteProduct.
Şablonul Prototype
-Specificaţi tipul obiectelor care se creează folosind o instanţă prototipică
-Creaţi obiecte noi copiind acest prototip
Aplicabilitate
când un sistem trebuie să fie independent de cum sunt create, compuse şi reprezentate produsele sale
-când clasele de instanţiat sunt specificate la execuţie
-evitaţi construirea unei ierarhii de clase-factory paralelă cu ierarhia claselor de produse
Conseciinte:
-Adăugarea şi ştergerea produselor la execuţie
-Mai puţină derivare
evită ierarhia paralelă pentru creatori
-Specificarea de obiecte noi prin varierea valorilor prototipurilor
clientul se comportă diferit prin delegarea către prototip
-Specificarea de obiecte noi prin varierea structurii prototipurilor
produse compuse
--Fiecare subclasă a Prototype trebuie să implementeze clone
dificil când clasele există deja sau obiectele interne nu permit copierea sau au referinţe circulare
Abstract Factory
-Oferă o interfaţă pentru crearea de familii de obiecte înrudite sau dependente fără specificarea claselor lor concrete
Aplicabilitate
-Sistemul trebuie să fie independent de cum sunt create, compuse şi reprezentate produsele sale
-Sistemul trebuie configurat de una din mai multe familii de produse
-Trebuie forţat ca o familie de obiecte produs să fie folosite împreună
-Izolarea claselor concrete
apar în ConcreteFactories nu în codul clientului
-Facilitează schimbul de familii de produse
un ConcreteFactory apare într-un singur loc
uşor de modificat
-Promovează consistenţa între produse
toate produsele unei familii se modifică împreună, în acelaşi timp
-Este dificilă susţinerea de tipuri noi de produse
Singleton
-Asigură ca o clasă să aibă doar o singură instanţă şi furnizează un punct de acces global la ea
Aplicabilitate
-dorim exact o instanţă a unei clase
-accesibilitate pentru clienţi dintr-un singur punct
-dorim ca instanţa să fie extensibilă
-poate permite deasemenea şi un set numărabil de instanţe
-optimizare faţă de vizibilitatea globală
-mai bine decât o clasă statică:
nu se poate răzgândi
Preview document
Conținut arhivă zip
- Ingineria Programelor.doc