Concretizarea clasificării GoF de Alan Shalloway şi James R. Trott
May 16th, 2013 | By Dumitru | Category: Proiectare și programareAutorii cărţii Design Patterns Explained (Alan Shalloway şi James R. Trott, 2000) au considerat important de a reevalua clasificarea GoF prin prisma decuplării obiectelor din sistem. Practic ei reconfigurează categoriile adăugând un nou grup, cel al şabloanelor de decuplare. Deşi majoritatea şabloanelor din acest grup fac parte din categoria şabloanelor comportamentale, autorii nu au recurs la localizarea şabloanelor într-o subcategorie, motivînd decuplarea ca trăsătură primară a acestora. Mai mult decât atât, ei nu exclud posibilitatea şabloanelor de a fi prezente în diverse grupe:
Purpose |
|||
Creational |
Structural |
Behavioral |
Decoupling |
Abstract Factory Builder Factory Method Prototype Singleton |
Adapter Composite Facade Proxy – virtual |
State Strategy Template Method Visitor Decorator Bridge Proxy – adding function |
Chain of Responsibility Iterator Mediator Memento Observer Proxy – accessibility |
Grupul Creational este alcătuit din aceleaşi şabloane ale grupei omonime GoF şi la fel determină modalităţi de creare a obiectelor.
Grupul Structural oferă soluţii fie de modificare sau simplificare a interfeţei, fie de manipulare în acelaşi mod a obiectelor cu tipuri diferite sau chiar incompatibile. În mod evident lipsesc două şabloane remarcabile Decorator şi Bridge, pe care autorii le-au poziţionat în grupul şabloanelor Behavioral. Nu am găsit nici o referinţă spre un alt şablon tradiţional al acestei grupei, cum ar fi Flyweight, dar dacă aş analiza modalitatea lor de grupare, aş poziţiona acest şablon la fel în această grupă.
Grupul Behavioral este constituit din acele şabloane care permit în special adăugarea dinamică de noi funcţionalităţi, sau oferă soluţii pentru modificarea comportamentului (implementării), care nu este iminentă, dar posibilă. Din această cauză acestui grup i s-au alăturat şabloanele Decorator şi Bridge.
Nu am găsit menţionat dacă Interpreter şi Command fac parte din acest grup, dar nu exclud că autorii ar putea interpreta şi în felul următor intenţia(contextul) lor: Interpreter manipulează în acelaşi mod entităţile gramaticii, deci fără ezitare poate fi atribuit grupului Structural, Command este şablonul care permite „îmbrăcarea” diferitor funcţii (comenzi) în aceeaşi „haină”, deci oferă posibilitatea manipulării unor obiecte diferite în acelaşi mod şi poate fi şi el atribuit grupului Structural. Dar fără careva indici expliciţi nu doresc să speculez şi voi presupune că aceste şabloane sunt în acest grup Behavioral.
Grupul Decoupling cuprinde acele şabloane scopul primar al căror este decuplarea obiectelor unul de altul, în vederea obţinerii unui cod scalabil şi flexibil. Deşi autorii nu-şi argumentează suficient decizia, invocînd exprimarea viziunii proprii asupra înţelegerii şabloanelor, totuşi apariţia acestui grup este oarecum justificată.