您的位置:首页 > 编程语言 > C语言/C++

设计模式之策略模式(使用C++)

2015-04-22 22:52 387 查看
#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进行统一管理。————策略模式。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  设计模式 c