Skip to content

Latest commit

 

History

History
56 lines (43 loc) · 1.44 KB

File metadata and controls

56 lines (43 loc) · 1.44 KB

Pattern Strategie

  • Problème :

    • Un traitement dans une classe peut être implémenté par divers algorithmes (certains étant plus efficaces, moins consommateurs de mémoire, etc.)
    • Choisir le bon algorithme par des instructions conditionnelles n'est pas satisfaisant
    • Il est utile de pouvoir permuter dynamiquement les algorithmes utilisés dans une application.
  • Description : Le patron stratégie est prévu pour fournir des moyens de définir une famille d'algorithmes, encapsuler chacun comme objet, et les rendre interchangeables. Le patron stratégie laisse les algorithmes changer indépendamment des clients qui les emploient.

Structure

Pattern Strategy

Exemple

public interface Strategy {
    public abstract void DoAlgorithm();
};

class Context
{
    private Strategy strategy;
    Context(){}
    void setStrategy(Strategy strategy){
        this.strategy = strategy;
    }

    public void doSomething(){
        String result = this.strategy.DoAlgorithm();
        // ...
    }
};

class ConcreteStrategyA implements Strategy{
    public ConcreteStrategyA(){;}
    
    @overide
    public String DoAlgorithm(){
        //do an algo
    }
};
class ConcreteStrategyB implements Strategy{

    public ConcreteStrategyB(){;}

    @overide
    public String DoAlgorithm(){
        //do an other algo
    }
};

Exercice Pattern Strategy