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