En génie logiciel, le patron stratégie est un patron de conception (design pattern) de type comportemental grâce auquel des algorithmes peuvent être sélectionnés à la volée au cours du temps d'exécution selon certaines conditions. Le patron de conception stratégie est utile pour des situations où il est nécessaire de permuter dynamiquement les algorithmes utilisés dans une application. Le patron stratégie est prévu pour fournir le moyen de définir une famille d'algorithmes, encapsuler chacun d'eux en tant qu'objet, et les rendre interchangeables. Ce patron laisse les algorithmes changer indépendamment des clients qui les emploient. Dès lors qu'un objet peut effectuer plusieurs traitements différents, dépendant d'une variable ou d'un état. #include #include // IStrategie est l’interface permettant d’exécuter un algorithme class IStrategie { public: void execute() { process(); } // NVI virtual ~IStrategie() = default; // Héritage, donc destructeur public virtuel private: virtual void process() = 0; // IStrategie::process() est une fonction virtuelle pure // et de ce fait IStrategie est une classe abstraite // autrement dit une classe qui ne peut être instanciée }; class AlgorithmeA : public IStrategie { private: // Chaque Algorithme redéfinit la façon de procéder void process() override { std::cout < "Traitement A" < std::endl; } }; class AlgorithmeB : public IStrategie { private: void process() override { std::cout < "Traitement B" < std::endl; } }; class AlgorithmeC : public IStrategie { private: void process() override { std::cout < "Traitement C" < std::endl; } }; // Contexte est la classe visible par le client. // Elle fait le lien entre les demandes du client et l’algorithme (ou les algorithmes) à utiliser. class Contexte final { private: std::unique_ptr

À propos de ce résultat
Cette page est générée automatiquement et peut contenir des informations qui ne sont pas correctes, complètes, à jour ou pertinentes par rapport à votre recherche. Il en va de même pour toutes les autres pages de ce site. Veillez à vérifier les informations auprès des sources officielles de l'EPFL.
Cours associés (3)
MATH-661: Advanced Scientific Programming in Python
This seminar teaches the participants to use advanced Python concepts for writing easier to read, more flexible and faster code. It teaches concepts in a hands-on and tangible fashion, providing examp
MATH-212: Analyse numérique et optimisation
L'étudiant apprendra à résoudre numériquement divers problèmes mathématiques. Les propriétés théoriques de ces méthodes seront discutées.
ME-213: Programmation pour ingénieur
Mettre en pratique les bases de la programmation vues au semestre précédent. Développer un logiciel structuré. Méthode de debug d'un logiciel. Introduction à la programmation scientifique. Introductio