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... »)

(diff) ← Version précédente | Voir la version courante (diff) | Version suivante → (diff)
Aller à : navigation, rechercher

But

Permettre la sélection à la volée d'un algorithme selon certaines conditions.

Diagramme de classes

Strategie.gif

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