Overblog Tous les blogs Top blogs Économie, Finance & Droit Tous les blogs Économie, Finance & Droit
Editer l'article Suivre ce blog Administration + Créer mon blog
MENU

Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions

Publicité

[Design patterns] Strategy

[Design patterns] Strategy

L’intérêt de ce design pattern est de permettre pour un même problème d’avoir plusieurs solutions
Exemple : l’exemple donné par le site dofactory est excellent, chaque classe concrète pourrait par exemple trier une collection reçue selon un algorithme ou des critères différents,cela permet à partir d’un problème commun d’avoir x implémentations
strategy.JPG
1 - Classe abstraite ou interface
public abstract class Strategy
 {
      //autres membres
    public abstract void Method1();
 }
 
2 - Implémentation (n classes)
Chaque classe implémente la(ou les méthodes abstraites) de la classe de base
public class ConcreteStrategyA : Strategy
 {
    public override void Method1()
    {
    }
 }
 
3 - Context
public class Context
 {
    Strategy strategy;
 
    public Context(Strategy strategy)
    {
      this.strategy = strategy;
    }
 
    public void CallMethod1()
    {
      strategy.Method1();
    }
 }
 
Utilisation
      // en définissant directement la strategie utilisée
        Strategy strategy = new ConcreteStrategyA();
        Strategy strategy = new ConcreteStrategyB();
        // ou en passant par le context
      Context context = new Context(new ConcreteStrategyA());
      context.CallMethod1();
 
      Context context = new Context(new ConcreteStrategyB());
      context.CallMethod1();
 
Publicité
Retour à l'accueil
Partager cet article
Repost0
Pour être informé des derniers articles, inscrivez vous :
Commenter cet article