Design pattern:Stratégie
De WIKI.minetti.org
Révision de 7 avril 2016 à 16:28 par Jp (discussion | contributions) (Page créée avec « == But == Permettre la sélection à la volée d'un algorithme selon certaines conditions. == Diagramme de classes == Fichier:Strategie.gif == Code == public class... »)
Sommaire
But
Permettre la sélection à la volée d'un algorithme selon certaines conditions.
Diagramme de classes
Code
public class Context {
/**
* L'instance de la stratégie choisie
*/
private Strategy strategy;
/**
* Constructeur initialisant la stratégie choisie pour le
* contexte
*/
public Context(Strategy strategy) {
this.strategy = strategy;
}
/**
* Méthode exécutant l'algorithme
*/
public void contextInterface() {
strategy.algorithmInterface(this);
}
}
public interface Strategy {
/**
* Méthode définissant l'appel à l'algorithme
*/
public void algorithmInterface(Context context);
}
public class ConcreteStrategyA implements Strategy {
/**
* Méthode implémentant l'algorithme
*/
public void algorithmInterface(Context context) {
// Implémentation de l'algorithme A en utilisant les
// données de la classe Context
}
}
public class ConcreteStrategyB implements Strategy {
/**
* Méthode implémentant l'algorithme
*/
public void algorithmInterface(Context context) {
// Implémentation de l'algorithme B en utilisant les
// données de la classe Context
}
}
Exemples
| Exemples | Classes | |
|---|---|---|
| Context | ConcreteStrategy | |
| Calculer la taxe d'une commande suivant le pays. | CommandeClient | TaxeFr
TaxeUs ... |
| Définir le type de mouvement d'un joueur pour un jeu. | Joueur | Joystick1
Joystick2 Ordinateur |
