策略模式的作用和特点:策略模式属于对象的行为模式,主要是针对一组算法,将每个算法封装到劝共同接口的独立的类中,从而使得他们可以相互替换。策略模式使得算法可以在不影响到客户端的情况下发生变化。
策略模式和简单工厂方法模式很像。
我理解中的区别:简单工厂模式是一种创建型模式,它是根据客户端的需求在工厂类中判断创建相应的对象,而策略模式是行为模式,它是根据客户端的需求给对象一个具体的算法,关注的是它的行为,它是在客户端先判断创建什么行为,然后在告诉环境类。
#include<iostream>
using namespace std;
class Strategy
{
public:
virtual void operate()=0;
};
class StrategyA:public Strategy
{
public:
void operate()
{
cout<<"StrategyA"<<endl;
}
};
class StrategyB:public Strategy
{
public:
void operate()
{
cout<<"StrategyB"<<endl;
}
};
class StrategyC:public Strategy
{
public:
void operate()
{
cout<<"StrategyC"<<endl;
}
};
class Context
{
public:
Strategy* strategy;
Context(Strategy* s):strategy(s){};
~Context()
{
delete strategy;
}
void operate()
{
strategy->operate();
}
};
void main()
{
char a;
cin>>a;
Context* context=NULL;
Strategy* strategy=NULL;
switch(a)
{
case 'A':
strategy=new StrategyA();
context=new Context(strategy);
context->operate();
break;
case 'B':
strategy=new StrategyB();
context=new Context(strategy);
context->operate();
break;
case 'C':
strategy=new StrategyC();
context=new Context(strategy);
context->operate();
break;
default:
break;
}
}
策略模式的应用:比如:你去商场购物,很多商品都是可以打折的,但是不同的商品打折率是不同的,这是就可以采用策略模式,对不同的商品,给它的策略打折算法也是不同的。