#include <iostream>
class Algorithm
{
public:
virtual void add() = 0;
virtual void sub() = 0;
};
class AlgorithmA : public Algorithm
{
public:
virtual void add() override
{
std::cout<<"Use A plan to add x and y"<<std::endl;
}
virtual void sub() override
{
std::cout<<"Use A plan to sub x and y"<<std::endl;
}
};
class AlgorithmB : public Algorithm
{
public:
virtual void add() override
{
std::cout<<"Use B plan to add x and y"<<std::endl;
}
virtual void sub() override
{
std::cout<<"Use B plan to sub x and y"<<std::endl;
}
};
class Context
{
public:
Context(Algorithm* plan)
: _plan(nullptr)
{
_plan = plan;
}
~Context()
{
if(_plan)
{
delete _plan;
_plan = nullptr;
}
}
public:
void add()
{
_plan->add();
}
void sub()
{
_plan->sub();
}
private:
Algorithm* _plan;
};
int main()
{
Context* contextA = new Context(new AlgorithmA());
Context* contextB = new Context(new AlgorithmB());
contextA->add();
contextA->sub();
contextB->add();
contextB->sub();
delete contextA;
delete contextB;
system("pause");
return 0;
}
我(Algorithm)有理论创建方法、讲解给各位听(A&B)、但是各位的实际方式不一样(plan),所以需要使用context进行统一管理。————策略模式。