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 se scrie o singură dată; fiecare variantă își completează proprii pași.

PHP o face în mod clasic: o clasă de bază abstract deține o metodă-schelet final, iar metodele abstract protected sunt pașii pe care fiecare subclasă trebuie să îi furnizeze.


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

make() deține ordinea: fierbe apa, infuzează, toarnă, extras. Ceaiul și cafeaua răspund doar cum se infuzează și ce se adaugă — final înseamnă că nu pot reordona și nu pot sări pași.

Scheletul rămâne fix

Ambele băuturi urmează aceiași patru pași, în aceeași ordine, pentru că ordinea trăiește într-o singură metodă final. O băutură nouă implementează două metode și moștenește toată disciplina.

Prompt
Scrie un script PHP cu șablonul Template Method: o clasă abstractă Drink a cărei metodă final make rulează scheletul fix (fierbe apa, infuzează, torni, extras) afișând fiecare pas, cu metodele abstract protected brew și extras, plus subclasele Tea și Coffee care completează pașii variabili. Prepară ambele băuturi.
Ieșire: script PHP

Când să îl folosești

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

Renunță la el 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și; pașii comuni se scriu o singură dată.

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.