Treci la conținutul principal

Ce este un șablon de proiectare

Un șablon de proiectare este o soluție cu nume, verificată în practică, pentru o problemă care revine mereu în proiectarea programelor. Șabloanele nu sunt cod pe care îl copiezi — sunt forme pe care le recunoști: „aceasta este o problemă de împachetare”, „aceasta este o problemă de notificare”.

Catalogul clasic conține 23 de șabloane, adunate de patru autori cunoscuți drept Gang of Four. Cunoașterea lor îți oferă două lucruri: răspunsuri gata pregătite la probleme obișnuite și un vocabular comun — a spune „folosește un adapter aici” înlocuiește un paragraf întreg de explicații.


Cele trei familii

Cele 23 de șabloane se împart în trei familii:

Creaționale — cum sunt create obiectele: Singleton, Factory Method, Abstract Factory, Builder, Prototype.

Structurale — cum se îmbină lucrurile între ele: Adapter, Bridge, Composite, Decorator, Facade, Flyweight, Proxy.

Comportamentale — cum comunică lucrurile între ele: Chain of Responsibility, Command, Interpreter, Iterator, Mediator, Memento, Observer, State, Strategy, Template Method, Visitor.

Fiecare șablon din acest grup are pagina lui: ce este, un exemplu care poate fi rulat, când se folosește și care sunt avantajele și dezavantajele lui.


Șabloanele în stil Go

Catalogul a fost scris pentru limbaje construite în jurul claselor și al moștenirii. Go nu are nici una, nici alta — are interfețe, compoziție și funcții, iar fiecare pagină de aici le folosește pe acestea.

Unele șabloane devin mult mai simple în Go (o strategie este doar o valoare de tip funcție); câteva aproape că nu mai sunt necesare. Fiecare pagină spune asta cinstit.

O avertizare înainte să începi: șabloanele sunt unelte, nu scopuri. Folosirea unui șablon acolo unde ar fi fost de ajuns o funcție simplă face codul mai prost. Apelează la un șablon atunci când îi simți problema — niciodată înainte.