Wzorzec Strategia (ang. Strategy) pozwala sterować wyborem i uruchomieniem odpowiedniego obiektu strategii. Wzorzec daje elastyczność rozwiązania problemu na kilka sposobów.

#include <iostream>

class CStrategy
{
public:
    virtual void Execute() = 0;
};

class CStrategyA : public CStrategy
{
public:
    void Execute() { std::cout << "StrategiaA" << std::endl; }
};

class CStrategyB : public CStrategy
{
public:
    void Execute() { std::cout << "StrategiaB" << std::endl; }
};

class CContext
{
    CStrategy* strategy;

public:
    CContext (CStrategy* s) : strategy(s) {}

    void Change(CStrategy* s) { strategy = s; }

    void Execute()
    {
        if (strategy)
            strategy->Execute();
    }
};

int main(int nArguments, char* szArguments[])
{
    CStrategyA sa;
    CStrategyB sb;

    CContext context(&sa);
    context.Execute();

    context.Change(&sb);
    context.Execute();

    return 0;
}

0 Komentarzy

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *