一、定义:策略模式定义算法族,分别封装起来,让它们之间可以相互替换,这种模式将算法的变化独立于使用算法的客户。
书上介绍了一个例子,是关于鸭子的,自己写的代码是优化后的。
#include<iostream>
#include<string>
using std::string;
using namespace std;
class Duck
{
public :
Duck(){}
virtual ~Duck() {}
void swim()
{
cout<<"会游泳的鸭子"<<endl;
}
void quack()
{
cout<<"会呱呱叫的鸭子"<<endl;
}
virtual void display()
{
cout<<"一只普通的鸭子"<<endl;
}
};
class RedDuck : public Duck
{
public:
RedDuck() {}
virtual ~RedDuck() {}
void display()
{
cout<<"一只红头鸭子"<<endl;
}
};
class GreenDuck : public Duck
{
public:
GreenDuck() {}
virtual ~GreenDuck() {}
void display()
{
cout<<"一只红头鸭子"<<endl;
}
};
class DuckContest
{
private:
Duck *duck;
public :
DuckContest(string str)
{
if(str == "red")
{
duck = new RedDuck();
}
if(str == "green")
{
duck = new GreenDuck();
}
}
void display()
{
duck->display();
}
void swim()
{
duck->swim();
}
void quack()
{
duck->quack();
}
};
int main()
{
DuckContest *duckcon = new DuckContest("red");
duckcon->swim();
duckcon->quack();
duckcon->display();
return 0;
}