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 StrategyInterface avec une méthode execute()
  • 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.