设计模式--策略模式(C++实现)

来源:互联网 发布:日志管理系统java设计 编辑:程序博客网 时间:2024/06/06 20:52
/********************************************************************************************
策略模式:
它对一系列的算法加以封装,为所有算法定义一个抽象的算法接口,
并通过继承该抽象算法接口对所有的算法加以封装和实现,具体的算法选择交由客户端决定(策略)。
Strategy模式主要用来平滑地处理算法的切换 。
适用于:
准备一组算法,并将每一个算法封装起来,使得它们可以互换。


***********************************************************************************************/
#include<iostream>
using namespace std;
class Strategy
{
public:
virtual void discount() = 0;
};
class five : public Strategy
{
public:
virtual void discount()
{ cout << "打5折" << endl;}
};
class six : public Strategy
{
public:
virtual void discount()
{ cout << "打6折" << endl;}
};
class Context
{
public:
Context(Strategy *strategy)
{ this->p = strategy;  }
void Operator()
{
p->discount();
}
private:
Strategy *p;
};
void main()
{
Strategy *strategy = new five();//创建具体的算法对象
Context *p = new Context(strategy);//扔向算法目录
p->Operator();//指针指向哪个算法,那么此指针调用的就是谁的算法
delete strategy;
delete p;


Strategy *strategy1 = new six();//创建具体的算法对象
Context *p1 = new Context(strategy1);//扔向算法目录
p1->Operator();//指针指向哪个算法,那么此指针调用的就是谁的算法


delete strategy1;
delete p1;
system("pause");

}

参考:传智播客--王保明

0 0