FANDOM


Bienvenue sur le wiki consacré au design pattern Strategy Modifier

Tout au long de cet article, nous allons vous décrire le design pattern Stratégie, son utilisation et sa structure. Bonne lecture.

Stratégie Modifier

Le design pattern Stratégie définit un ensemble d'algorithmes qui peuvent être utilisés de manière interchangeable. Le comportement d’une classe ou de son algorithme pouvant être modifiés lors de l'exécution, ce type de modèle de conception relève du comportement.

Le pattern Strategy a pour objectif d'adapter le comportement et les algorithmes d'un objet en fonction d'un besoin sans changer les interactions de cet objet avec les clients. L'idée principale est de pouvoir mettre en place une certaine stratégie (par exemple, une méthode qui réalise une certaine action) et de pouvoir changer dynamiquement de stratégie. On crée donc une interface de base et on y ajoute une méthode qui sera la méthode qui applique la stratégie.

Le pattern Stratégie peut être utilisé lorsque  : 

  • Le comportement d'une classe peut être implanté par différents algorithmes dont certains sont plus efficaces en temps d'exécution ou en consommation mémoire ou encore contiennent des mécanismes de mise au point;
  • Un objet peut avoir plusieurs comportements différents
  • Des données d'un algorithme ne doivent pas être connues de l'utilisateur.
  • L'implémentation du choix de l’algorithme par des instructions conditionnelles est trop complexe;
  • Un système possède de nombreuses classes identiques à l’exception d'une partie de leur comportement.

Historique Modifier

Dans les années 70, un architecte cherche à résoudre des problèmes récurrent lors de la phase de conception en architecture. Pour cela, il créé 253 pattern qui couvrent tous les aspects de la construction (la charpente par exemple).

Dans les années 90, l'idée de Christopher Alexander est reprise et étendue au domaine de la conception de logiciels, mettant au point 23 design pattern dont Facade.

Architecture Modifier

Strategy

Diagramme de classe d'un exemple architecture pour le design pattern Strategy

Afin d'implémenter le design pattern Stratégie il faut :

  • Définir une interface commune à tous les algorithmes ou comportements de la même famille
  • Créer les classes comportant les algorithmes ou les comportements à partir de l’interface commune
  • Utiliser la stratégie voulue dans le code de l’objet

Dans le diagrame de classe d'exemple :

  • Interface est l'interface commune a tous les algorithmes. Cette interface est utilisée par le contexte pour invoquer l'algorithme
  • ImplementationOne et ImplemenationTwo sont les sous classes concrètes qui implantent les différents algorithmes
  • Context est la classe utilisant un des algorithmes des classes d'implémentation de Stratégie. En conséquence, elle possède une référence vers une instance de l'une de ces classes. Elle peut de plus, si nécessaire, exposer ses données internes aux classes d'implémentation.

Avantages Modifier

Le design pattern Strategy :

  • Facilite l'ajout, la modification ou la suppression d'un algorithme/comportement
  • Évite la redondance de code
  • Améliore la ré-utilisabilité et la flexibilité du code

Exemples Modifier

Description de l'exemple choisi Modifier

L'exemple choisi est une stratégie concernant des algorithmes de tri. Ici, l'interface de la stratégie est nommée Tri. Deux classes implémentent cette interface. Ces classes contiennent des algorithmes de tri différents. La classe Contexte contient les méthodes permettant par exemple d'appliquer un tri ou d'en changer. Ainsi, dans la classe SortingClient, qui contient les données accessibles au client, il est possible, en appliquant la stratégie avec les méthodes de Contexte, de choisir le type de tri à appliquer. De cette façon, pour un tableau d'entiers à trier, il sera possible de choisir une des méthodes de tri définie par la stratégie Tri (ici deux types de tri définis dans les classes TriABulles et TriMinimum).

Il est donc facile et rapide de changer de méthode de tri. Si l'utilisateur désir une nouvelle méthode de tri, il suffit de rajouter une classe contenant un nouvel algorithme de tri qui implémente l'interface Tri. Les algorithmes peuvent ainsi évoluer indépendamment des clients qui les utilisent.

Diagramme de classe Modifier

Uml strategie

Diagramme de classe de l'exemple de stratégie choisi.

Code de l'exemple Modifier

Tri

Interface Tri.

Trimin

Classe TriMinimum implémentant l'interface Tri.

Tribulle

Classe TriABulle implémentant l'interface Tri.

Contexte

Classe Context qui utilise la stratégie.

Client

Classe SortingClient

Références Modifier

Interférence d'un bloqueur de publicité détectée !


Wikia est un site gratuit qui compte sur les revenus de la publicité. L'expérience des lecteurs utilisant des bloqueurs de publicité est différente

Wikia n'est pas accessible si vous avez fait d'autres modifications. Supprimez les règles personnalisées de votre bloqueur de publicité, et la page se chargera comme prévu.

Sur le réseau FANDOM

Wiki au hasard