---
title: 'Le Strategy Pattern expliqué avec Symfony'
description: 'Découvrez comment le Strategy Pattern permet de rendre votre code Symfony plus flexible et maintenable en encapsulant des algorithmes interchangeables.'
pubDate: 2026-05-11
family: 'php-symfony'
tags: []
heroImage: '/images/le-strategy-pattern-explique-avec-symfony.webp'
videoUrl: 'https://youtu.be/cnVqkgbLN00'
---

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.
