Back
Close

Design Pattern Strategy

Lhudram
34.2K views
Next: Exemple

Introduction

Bonjour !
Nous allons aujourd’hui explorer le pattern Strategy. Pour ce faire nous allons expliquer ce qu’est un design pattern (ou patron de conception) pour ensuite expliquer la problématique autour du pattern Strategy et comment il y répond.
Allons-y !

Design quoi ?

Derrière ce mot barbare rĂ©side en fait une dĂ©finition toute simple : un design pattern est une façon gĂ©nĂ©rique d’organiser ses modules pour rĂ©pondre Ă  une problĂ©matique et ce peu importe le langage.
On en trouve 3 types :
CrĂ©ation : pour faciliter la configuration de classes et objets.
Structure : pour organiser les classes d’une application.
Comportement : pour organiser les objets et faciliter la communication entre eux, c’est Ă©galement le type du pattern Strategy.
Les 23 design pattern principaux, dont celui traitĂ© aujourd’hui, ont Ă©tĂ© dĂ©finis par le ‘’Gang of Four’’ dans le livre Design Patterns : Elements of Reusable Object-Oriented publiĂ© en 1995.

Du coup, il sert Ă  quoi le pattern Strategy ?

La problĂ©matique de ce pattern est plutĂ´t simple : comment faire pour rĂ©aliser diffĂ©rentes opĂ©rations avec un seul et mĂªme objet ?
Vous me direz, c’est simple on fait une classe avec toutes les opĂ©rations ! Mais non car procĂ©der comme ceci violerait un principe SOLID : le Single Responsibility principle.
Pour Ă©viter ceci, on structure nos classes de la manière suivante :
UML Diagram Source : https://fr.wikipedia.org/wiki/Stratégie_(patron_de_conception)#/media/File:Strategy_Pattern_in_UML.png

Mis comme cela, ce n’est pas particulièrement clair.
Mais pas d’inquiĂ©tude ! Tout ceci sera amplement expliquĂ© dans l’exemple de la page suivante.

Quels avantages pour quels inconvĂ©nients ?

Ce pattern permet :
-Une meilleure lisibilité du code.
-D’éviter de violer un principe SOLID.
-Mais avant tout de définir plusieurs algorithmes interchangeables dynamiquement.

Son seul inconvĂ©nient ? Il nĂ©cessite d’ajouter une classe.
Vous admettrez que cela fait peu d’inconvĂ©nients. MalgrĂ© cela, ça ne veut pas dire que vous pouvez l’utiliser Ă  tout va, c’est avant tout un pattern destinĂ© Ă  un usage très prĂ©cis : rĂ©aliser diffĂ©rentes opĂ©rations avec un seul et mĂªme objet.

Create your playground on Tech.io
This playground was created on Tech.io, our hands-on, knowledge-sharing platform for developers.
Go to tech.io