Sabloane de proiectare (Design Patterns)

Conceptul de design pattern nu depinde in prima etapa de limbajul de programare, el aplicandu-se in orice limbaj de programare bazat pe OOP.
Un sablon de proiectare (Design patterns) descrie o problema care apare in mod repetat in mediul nostru de dezvoltare, cat si rezolvarea acelei probleme intr-un mod in care puteti utiliza solutia ori de cate ori se poate aplica, de asemenea pot aparea unele constrangeri de care trebuie sa tinem cont.

In dezvoltarea de aplicatii este bine sa se refoloseasca solutii despre care se stie ca au functionat in trecut si pe care le-au testat deja. In general pentru a implementa o solutie, diferiti progrmatori pot alege diferite solutii pentru rezolvarea acelei probleme, astfel se ajunge ca pentru rezolvarea acelei probleme un programator sa folosesaca una sau mai multe sabloane de proiectare.

Sabloanele de proiectare (Design patterns) sunt clasificate dupa scopul (creational, structural, comportamental) si domeniul acestora (clasa sau obiect).

Sabloanele creationale

Acest tip de sablon ajuta la realizarea unui sistem independent de modul in care obiectele sunt creaiate, compuse si reprezentate, abstractizand procesul de instantiere.Pe masura ce solutiile devin tot mai complexe, ele incep sa depinda mai mult de crearea si compunerea obiectelor decat de sistemul clasic de mosteniri si implementari.

Un sablon creational ce se aplica unei clase v-a folosi mostenirea pentru a varia clasa care este instantiata, pe cand un sablon creational de obiect foloseste un alt obiect pentru a realiza instantierea.

design patterns - factory method
Factory Method - Denumit si constructor virtual, defineste o interfata pentru crearea unui obiect si permite subclaselor sa decida ce clasa vor instantia.
design patterns - singleton
Singleton - Modelul Singleton este o clasa cu o singura instanta si vine ca o alternativa la definirea unor obiecte globale. Clasa Singleton ofera un acces facil al intregii aplicatii la obiectele din interiorul acestei clase.

(...)

Sabloanele structurale

Se ocupa de modul in care sunt compuse clasele si obiectele pentru a forma structuri mai complexe.

design patterns - decorator
Decorator - Acest model ofera o alternativa flexibila la extinderea claselor pentru adaugarea de noi functionalitati la un obiect.

(...)

Sabloanele comportamentale

Sablonele comportamentale se ocupa cu algoritmi si atribuirea responsabilitatilor intre obiecte. Pe langa sabloanele de clase si obiecte, acestea descriu si sabloanele de comunicare intre clase si obiecte.

Chain of responsability - Este un sablon comportamental ce permite unui obiect de a trimite o comanda fara sa se stie ce obiect o sa primi si gestiona, comparativ cu sablonul observator care stie cui sa trimita comanda.
Command - Sablonul de comanda este un obiect ce incapsuleaza toate informatiile necesare pentru a apela o metoda la un moment ulterior.
Observer - Sablonul observator este un sablon de proiectarare in care un obiect subiect, gestioneaza o lista cu observatori pe care ii anunta automat de eventualele modificari de stare.

(...)