-
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.
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
}
};