Treci la conținutul principal

Ce este

Șablonul Strategy face un algoritm interschimbabil: codul din jur rămâne același, iar partea care se poate schimba — cum se calculează prețul, cum se sortează, cum se comprimă — este atașată ca o valoare.

TypeScript poate scrie o strategie în două feluri: ca o clasă care implementează o interfață sau ca un simplu tip de funcție. Această pagină folosește tipul de funcție, deoarece strategia de aici este un singur calcul, fără stare proprie — type Pricing = (price: number) => number și o atribuire sunt tot mecanismul.


Exemplu: preț interschimbabil

Shop nu se schimbă niciodată; regula de preț este o valoare de tip funcție într-un câmp. Preț normal, Black Friday, reducere pentru membri — trei funcții, un singur magazin.

Strategia este o valoare de tip funcție

Trei plăți ale aceluiași preț de 50 dau trei totaluri — 50.00, 35.00 și 45.00 — și diferă doar funcția atribuită. La fel funcționează și sortarea: array.sort(compare) primește strategia de comparare.

Prompt
Scrie un program TypeScript cu șablonul Strategy folosind un tip de funcție: un tip Pricing care primește și returnează un număr, trei strategii (preț normal, Black Friday cu 30% reducere și membru minus 5) și o clasă Shop care păstrează funcția de preț curentă, folosită de metoda sa checkout, care afișează totalul cu două zecimale. Plătește același preț cu toate cele trei strategii.
Ieșire: program TypeScript și rezultatul capturat

Când să îl folosești

Folosește-l ori de câte ori un algoritm variază, iar contextul din jur nu: reguli de preț, politici de reîncercare, ordini de sortare, moduri de validare.

Evită-l când există un singur algoritm și niciun al doilea realist. Folosește forma cu interfață și clasă în loc de o funcție doar când o strategie are nevoie de stare proprie sau de mai multe metode.


Avantaje și dezavantaje

Avantaje: comportamentul se schimbă în timpul execuției; fiecare strategie este mică și poate fi testată separat; ca tip de funcție este aproape gratuită — un alias de tip și o atribuire.

Dezavantaje: strategia aleasă este invizibilă la locul apelului — depanarea înseamnă să afli ce a fost atribuit; prea multe micro-strategii fragmentează o logică simplă.