Résumé
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.
Publications associées (2)
Cours associés (7)
CS-108: Practice of object-oriented programming
Les étudiants perfectionnent leurs connaissances en Java et les mettent en pratique en réalisant un projet de taille conséquente. Ils apprennent à utiliser et à mettre en œuvre les principaux types de
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.
CS-305: Software engineering
This course teaches the basics of modern software development: designing software, working in a team, writing good code, shipping software, and evolving software. It emphasizes building software that
Afficher plus
Séances de cours associées (19)
Analyse quantitative de phase Rietveld
Explore l'analyse quantitative de phase Rietveld, couvrant les fractions de phase, l'étalonnage standard et les lignes directrices de raffinement des paramètres.
Équations des vagues: Chaîne vibrante
Explore l'équation d'onde pour une chaîne vibrante et sa solution numérique en utilisant des formules de différence finie et le schéma Newmark dans MATLAB/GNU Octave.
Explorer Thymio sans ordinateur
Présente le robot Thymio et les activités pour observer son comportement.
Afficher plus
MOOCs associés (1)
Cement Chemistry and Sustainable Cementitious Materials
Learn the basics of cement chemistry and laboratory best practices for assessment of its key properties.