AHRIMAN.FR

SCIENCE - NEO-EVHEMERISME - DONJONSDRAGONS

Design pattern : Strategy

Ecris par :
Mis en ligne le :
Lu :
112 fois
Twitter Facebook Google Plus Linkedin email

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.

Utilisation

Dès lors qu'un objet peut effectuer plusieurs traitements différents, dépendant d'une variable ou d'un état.

Exemple en C++



#include <iostream>
using namespace std;

class IStrategie
{
public:
virtual void execute() = 0; // execute() 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
{
public:
void execute()
{
cout << "Traitement A" << endl;
}
};

class AlgorithmeB : public IStrategie
{
public:
void execute()
{
cout << "Traitement B" << endl;
}
};

class AlgorithmeC : public IStrategie
{
public:
void execute()
{
cout << "Traitement C" << endl;
}
};

class Element
{
private:
IStrategie* strategie;

public:
Element(IStrategie* strategie) : strategie(strategie)
{
}

void execute()
{
strategie->execute();
}
};

void main()
{
AlgorithmeA algoA;
AlgorithmeB algoB;
AlgorithmeC algoC;

Element elementA(&algoA);
Element elementB(&algoB);
Element elementC(&algoC);

elementA.execute(); // L'élément A va effectuer le traitement A
elementB.execute(); // L'élément B va effectuer le traitement B
elementC.execute(); // L'élément C va effectuer le traitement C
}

Images

Bibliographie