Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

8 septembre 2007 6 08 /09 /septembre /2007 15:13
[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();
 

Partager cet article

Repost 0
Published by Romagny13 - dans Design patterns
commenter cet article

commentaires