Le Strategy Pattern est l’un des design patterns les plus utiles pour éliminer les if/else en cascade et rendre votre code orienté objet vraiment extensible. Dans cette vidéo, on l’explore concrètement avec Symfony.
Qu’est-ce que le Strategy Pattern ?
Le Strategy Pattern fait partie des patterns comportementaux définis par le GoF (Gang of Four). Son principe : extraire des variantes d’un algorithme dans des classes séparées qui partagent une interface commune, puis injecter la bonne stratégie selon le contexte.
Résultat : le code appelant ne sait pas quelle implémentation s’exécute — il parle uniquement à l’interface.
Application concrète avec Symfony
Symfony est un terrain idéal pour ce pattern grâce à son conteneur d’injection de dépendances. On peut :
- Déclarer une interface
StrategyInterfaceavec une méthodeexecute() - Créer plusieurs classes concrètes qui implémentent cette interface
- Utiliser le tagged services de Symfony pour injecter automatiquement toutes les stratégies dans un contexte
Cela évite de modifier le code existant pour ajouter une nouvelle stratégie — il suffit de créer une nouvelle classe et de la taguer.
Quand utiliser ce pattern ?
- Plusieurs algorithmes réalisent la même tâche mais différemment (calcul de prix, export de fichiers, modes de paiement)
- On veut éviter une explosion de conditions
switch/case - On anticipe l’ajout fréquent de nouvelles variantes
Open/Closed Principle
Le Strategy Pattern est une application directe du principe Open/Closed : ouvert à l’extension (nouvelle stratégie), fermé à la modification (le code existant ne change pas).
Regardez la vidéo pour voir l’implémentation complète pas à pas dans un projet Symfony réel.