Strategy pattern
Soms wil je dat een object zich anders gedraagt, afhankelijk van de situatie. Bijvoorbeeld een betaalmethode, een sorteeralgoritme of een manier van inloggen. In plaats van eindeloos if-statements te stapelen, kun je dat gedrag slim loskoppelen van de rest van je code. Daar komt het strategy pattern in beeld. Het strategy pattern is een ontwerppatroon (design pattern) dat je helpt om algoritmes of logica uitwisselbaar te maken. Je definieert een set strategieën, stopt ze netjes in aparte objecten en kiest op runtime welke je toepast. Zo blijft je code overzichtelijk, testbaar en flexibel.
Inhoudsopgave
Vaste structuur, flexibel gedrag
De kern van het strategy pattern ziet er als volgt uit: je hebt een ‘context’ (bijvoorbeeld een betaalsysteem), en die maakt gebruik van een ‘strategie’ (zoals iDEAL, creditcard of PayPal). Alle strategieën delen dezelfde interface, zodat je ze kunt uitwisselen zonder aanpassingen in de rest van je code.
Stel je voor: je webshop heeft meerdere verzendmethodes. Met het Strategy pattern hoef je niet telkens een nieuwe ‘if’ toe te voegen, maar kies je simpelweg de juiste verzendstrategie en geef je die mee aan je systeem. Plug-and-play, maar dan met logica.
Waarom moeilijk doen als het flexibeler kan?
Onderhoudbare code is goud waard. Zeker in grotere systemen of software die moet meegroeien met je bedrijf, voorkomt het strategy pattern dat alles in elkaar vastroest. Je voegt een nieuwe strategie toe zonder bestaande code aan te raken en dat betekent minder bugs en meer overzicht.
Bovendien maak je je systeem beter testbaar: elke strategie kun je los testen zonder bijwerkingen van andere delen in de code.
Even opladen met een metafoor
Zie het strategy pattern als een oplader met verwisselbare stekkers. Je toestel blijft hetzelfde, maar afhankelijk van waar je bent (thuis, op kantoor, in het buitenland) kies je de juiste stekker. Alles werkt, zonder dat je je hele oplader hoeft om te bouwen.
Zo werkt het ook in code: je schrijft één systeem, en wisselt de ‘stekker’ (strategie) afhankelijk van wat nodig is.
Veelgestelde vragen
Ze zijn verwant. Het strategy pattern maakt gebruik van polymorfisme om verschillende strategie-objecten op dezelfde manier aan te spreken.
Als je meerdere varianten van een algoritme of gedrag hebt en je die dynamisch wilt kunnen uitwisselen.
Zeker niet. Ook in kleinere projecten kan het voor rust en overzicht zorgen, vooral als gedrag vaker verandert.
Een switch werkt prima voor simpele keuzes. Maar als je code groeit, zorgt het strategy pattern voor schonere scheiding van verantwoordelijkheden.