Type : | Co (Comportemental) |
Intention : | Définit une famille d'algorithmes, encapsule chacun d'entre eux et les rend interchangeables. Le Stratégie permet aux algorithmes d'évoluer indépendamment des clients qui les utilisent. |
Applicabilité : | Utilisez la Stratégie dans les cas où : - Plusieurs classes apparentées ne diffèrent que par leur comportement. Les Stratégies donnent le moyen d'appareiller une classe avec un comportement parmi plusieurs autres. - On a besoin de diverses variantes d'un algorithme. Par exemple, on peut définir des algorithmes représentants différents compromis encombrement mémoire / temps d'exécution. Les Stratégies peuvent être utilisées quand ces variantes sont implémentées sous la forme d'une hiérarchie de classe d'algorithmes. - Un algorithme utilise des données que les clients n'ont pas à connaître. Utiliser la Stratégie dispense d'avoir à révéler des structures complexes de données spécifiques des algorithmes. - Une classe définit de nombreux comportements, qui figurent dans ses opérations sous la forme de déclarations conditionnelles multiples. Plutôt que laisser subsister ces expressions conditionnelles, on déplacera les sections correspondantes aux différentes branches, dans des classes Strategie qui leurs sont propres. |