Treci la conținutul principal

Ce este

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

În mod clasic, scheletul stă într-o clasă de bază. Go îl face cu o funcție care primește o interfață: funcția este rețeta fixă, iar interfața ține pașii variabili.


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

MakeDrink deține ordinea: fierbe, prepară, toarnă, adaosuri. Ceaiul și cafeaua răspund doar la cum se prepară și ce se adaugă — nu pot reordona sau sări peste pași.

Scheletul rămâne fix

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

Prompt
Scrie un program Go cu șablonul Template Method în stil Go: o interfață Steps cu Brew și Extras, o funcție MakeDrink care execută scheletul fix (fierbe apa, prepară, toarnă, adaosuri) afișând fiecare pas, plus tipurile Tea și Coffee care completează pașii variabili. Prepară ambele băuturi.
Ieșire: program Go și rezultatul capturat

Când să îl folosești

Folosește-l când mai multe proceduri împart 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ă.

Dezavantaje: este 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.