Aller au contenu

Strategy

Contexte : Définir une famille d’algorithmes, les encapsuler chacun, et les rendre interchangeables. Strategy permet à l’algorithme de varier indépendamment des clients qui l’utilisent.

public interface IStrategy
{
void Execute();
}
public class ConcreteStrategyA : IStrategy
{
public void Execute() => Console.WriteLine("Strategy A");
}
public class Context
{
private IStrategy _strategy;
public void SetStrategy(IStrategy strategy) => _strategy = strategy;
public void DoWork() => _strategy.Execute();
}

Traitement des paiements : Un site e‑commerce sélectionne différentes stratégies : CreditCardStrategy, PayPalStrategy, CryptoStrategy selon le choix de l’utilisateur. Le CheckoutContext utilise la stratégie sélectionnée pour calculer le montant final.

Exemple : Le tri dans .NET : List<T>.Sort(IComparer<T>) permet d’injecter différentes stratégies de comparaison (par nom, par prix, par date). De même, System.Text.Encoding propose des stratégies pour différents encodages de caractères.