Treci la conținutul principal

Ce este un șablon de proiectare

Un șablon de proiectare este o soluție cunoscută și verificată pentru o problemă care apare 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 sub numele de Gang of Four. Cunoașterea lor îți dă două lucruri: răspunsuri gata făcute la probleme frecvente și un vocabular comun — a spune „folosește un adaptor aici” înlocuiește un paragraf întreg de explicații.


Cele trei familii

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

De creare — 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 se poate rula, când să îl folosești și care sunt avantajele și dezavantajele lui.


Șabloanele în stil TypeScript

Catalogul a fost scris pentru limbaje construite în jurul claselor și al interfețelor, iar TypeScript le are pe amândouă — așa că majoritatea șabloanelor de aici arată aproape exact așa cum le descrie catalogul: o interface pentru rol și una sau mai multe class ... implements pentru participanți.

Două detalii ale limbajului TypeScript schimbă senzația. Interfețele lui sunt structurale — o valoare se potrivește cu o interfață dacă are forma corectă, așa că interfețele mici sunt ieftine. Iar funcțiile sunt valori obișnuite, deci câteva șabloane se reduc la aproape nimic: o strategie poate fi pur și simplu o funcție pe care o transmiți mai departe. Fiecare pagină spune asta sincer.

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. Recurge la un șablon atunci când îi simți problema — niciodată înainte.