You have some underlying algorithms and from client you want to use interchangibly.

class IStrategy {
public:
virtual ~ IStrategy() {
}
virtual void process() = 0;
};
class StrategyA : public IStrategy {
public:
virtual void process() {
cout <<" process using Stategy A " <<endl;
}
};
class StrategyB : public IStrategy {
public:
virtual void process() {
cout <<" process using Stategy B " <<endl;
}
};
class User {
private:
unique_ptr<IStrategy> mStrategy;
public:
User(unique_ptr<IStrategy> strategy) : mStrategy(std::move(strategy)) {
}
void process() {
mStrategy->process();
}
};
int main() {
User a(make_unique<StrategyA>());
a.process();
User b (make_unique<StrategyB>());
b.process();
}
Follow more posts @ https://jdecodes.wordpress.com
My all design pattern articles :
- https://jdecodes.wordpress.com/2024/07/13/builder-design-pattern/
- https://jdecodes.wordpress.com/2024/07/13/command-design-pattern/
- https://jdecodes.wordpress.com/2024/07/13/iterator-design-pattern/
- https://jdecodes.wordpress.com/2024/07/13/mediator-design-pattern/
- https://jdecodes.wordpress.com/2024/07/19/state-design-pattern/
- https://jdecodes.wordpress.com/2024/07/19/memento-design-pattern/
- https://jdecodes.wordpress.com/2024/07/19/observer-design-pattern/
- https://jdecodes.wordpress.com/2024/07/19/strategy-pattern/
- https://jdecodes.wordpress.com/2024/07/20/visitor-design-pattern/
- https://jdecodes.wordpress.com/2024/07/20/adapter-desing-pattern/
- https://jdecodes.wordpress.com/2024/07/20/bridge-design-pattern/
- https://jdecodes.wordpress.com/2024/07/22/composite-desing-pattern/
- https://jdecodes.wordpress.com/2024/07/22/facade-design-pattern/
- https://jdecodes.wordpress.com/2024/07/22/decorater-design-pattern/
Leave a comment