Treci la conținutul principal

Ce este

Șablonul Template Method fixează scheletul unui algoritm — pașii și ordinea lor — lăsând pașii individuali să varieze. Rețeta este scrisă o singură dată; fiecare variantă își completează proprii pași.

TypeScript scrie acest lucru cu o clasă abstract. Scheletul este o metodă obișnuită a clasei de bază; pașii care variază sunt metode abstract fără corp, așa că fiecare subclasă trebuie să le furnizeze, iar clasa de bază nu poate fi creată singură.


Exemplu: o rețetă, două băuturi

make() deține ordinea: fierbe, infuzează, toarnă, extra. Tea și Coffee răspund doar cum se infuzează și ce se adaugă — nu pot reordona sau sări peste pași.

Scheletul rămâne fix

Ambele băuturi afișează aceiași patru pași în aceeași ordine, pentru că ordinea se află într-o singură metodă: fierbe apa, linia de infuzare, toarnă în ceașcă, linia cu extra. O băutură nouă implementează două metode și moștenește toată disciplina.

Prompt
Scrie un program TypeScript cu șablonul Template Method: o clasă abstractă Drink a cărei metodă make rulează scheletul fix (fierbe, infuzează, toarnă, extra) afișând fiecare pas, cu metodele abstracte brew și extras, și subclasele Tea și Coffee care completează acești doi pași. Prepară ambele băuturi.
Ieșire: program TypeScript și rezultatul capturat

Când să îl folosești

Folosește-l când mai multe proceduri au aceeași secvență fixă, dar cu detalii diferite — generarea de rapoarte, fluxurile de import, pregătirea testelor.

Evită-l când variantele au nevoie și de ordini diferite — forțarea lor sub un singur schelet îndoaie șablonul până se rupe. Iar cu o singură variantă, scheletul este doar o funcție.


Avantaje și dezavantaje

Avantaje: secvența este impusă într-un singur loc; variantele nu pot uita sau amesteca pașii; pașii comuni sunt scriși o singură dată; un pas uitat este o eroare de compilare, nu o surpriză la rulare.

Dezavantaje: rigid prin construcție — o variantă care are nevoie de „aproape la fel, dar...” se luptă cu scheletul; prea multe metode-cârlig fac rețeta greu de urmărit.