Treci la conținutul principal

Ce este

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

Acesta este șablonul pe care Python îl simplifică cel mai mult: deoarece funcțiile sunt valori de primă clasă, o strategie este adesea doar o funcție obișnuită. Fără protocol, fără clasă — atribuiți o altă funcție și comportamentul se schimbă.


Exemplu: prețuri interschimbabile

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

Strategia este o funcție

Trei plăți pentru același preț de 50 dau trei totaluri diferite — diferă doar funcția atribuită. Tot așa funcționează și sorted(): funcția key pe care i-o dați este strategia de comparare.

Prompt
Scrieți un program Python cu șablonul Strategie în stilul Python: trei funcții simple de calcul al prețului (normal, Black Friday cu 30% reducere, membru minus 5) și o clasă Shop care păstrează funcția de preț curentă, folosită de metoda sa checkout. Calculați plata pentru același preț cu toate cele trei strategii.
Ieșire: program Python complet

Când să îl folosiți

Folosiți-l ori de câte ori un algoritm variază, iar ce este în jurul lui nu: reguli de preț, politici de reîncercare, ordini de sortare, moduri de validare.

Renunțați la el când există un singur algoritm și nu se întrevede realist un al doilea. Folosiți o clasă în loc de o funcție doar când o strategie are nevoie de propria stare sau de mai multe metode.


Avantaje și dezavantaje

Avantaje: comportamentul se schimbă în timpul rulării; fiecare strategie este mică și poate fi testată separat; în Python costă aproape nimic — o funcție obișnuită și o atribuire.

Dezavantaje: strategia aleasă nu se vede în locul apelului — depanarea înseamnă să aflați ce a fost atribuit; prea multe micro-strategii fragmentează o logică simplă.