Strategie - een functioneel ontwerppatroon dat een familie van vervangbare algoritmen definieert en deze in de vorm van klassen inkapselt. Het maakt uitwisselbaar gebruik van elk van hen tijdens de werking van de applicatie mogelijk, ongeacht de gebruikers die ze gebruiken.
Probleem
Overweeg een programma dat statistieken genereert over de broncode die bij de invoer wordt geleverd, zoals het aantal regels, het aantal klassen, enz. In het mechanisme voor het genereren van statistieken kunnen we het codespecifieke deel van de programmeertaal waarin de code is geschreven en algemeen taalonafhankelijk onderscheiden. We willen dat ons programma universeel is en veel programmeertalen ondersteunt, en dat we in de toekomst nieuwe kunnen toevoegen.
De oplossing is om het Strategiepatroon te gebruiken, waarbij algoritmen die specifiek zijn voor programmeertalen worden gescheiden als afzonderlijke klassen met een gemeenschappelijke interface waarmee het programma specifieke informatie over de broncode kan extraheren.
Constructie
In de Strategiesjabloon definiëren we een gemeenschappelijke interface voor alle ondersteunde algoritmen en bevatten alle toegestane bewerkingen. Vervolgens implementeren we het in individuele klassen met specifieke algoritmen. Daarnaast onderscheidt de sjabloon ook de klant door middel van algoritmen. Het heeft een verwijzing naar de momenteel gebruikte strategie en de methode setStrategie () waarmee u deze kunt wijzigen.