Strategie - un model de design funcțional care definește o familie de algoritmi înlocuitori și îi încapsulează sub formă de clase. Permite utilizarea interschimbabilă a fiecăruia în timpul funcționării aplicației, indiferent de utilizatorii care le utilizează.
Problema
Luați în considerare un program care generează statistici privind codul sursă furnizat la intrare, cum ar fi numărul de linii, numărul de clase etc. În mecanismul de generare a statisticilor, putem distinge partea specifică codului limbajului de programare în care a fost scris codul și, în general, independent de limbă. Am dori ca programul nostru să fie universal și să sprijine multe limbaje de programare, precum și în viitor pentru a putea adăuga altele noi.
Soluția constă în utilizarea modelului Strategiei, în care algoritmi specifici limbajelor de programare sunt separate ca clase separate cu o interfață comună care va permite programului să extragă informații specifice despre codul sursă.
Construcție
În șablonul Strategie, definim o interfață comună pentru toți algoritmii suportați și care conțin toate operațiunile permise. Apoi îl implementăm în clase individuale oferind algoritmi specifici. În plus, șablonul distinge și clientul folosind algoritmi. Are o referire la strategia folosită în prezent și la metoda setStrategie () care vă permite să o schimbați.