一、策略模式
定义了一系列封装好的了算法,它们之间可相互替换。
二、例子
#include <iostream>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
// 抽象武器策略
class Weapon_stgy {
public:
virtual void UseWeapon() = 0;
};
class Knife : public Weapon_stgy {
public:
virtual void UseWeapon() {
cout << "use knife\n";
}
};
class Gun : public Weapon_stgy {
public:
virtual void UseWeapon() {
cout << "use Gun\n";
}
};
class Man {
public:
void setWeapon(Weapon_stgy* p) {
p_weapon = p;
}
void throwWeapon() {
p_weapon->UseWeapon();
}
private:
Weapon_stgy* p_weapon;
};
void test() {
Man* man = new Man;
Weapon_stgy* knife = new Knife;
Weapon_stgy* gun = new Gun;
man->setWeapon(knife);
man->throwWeapon();
man->setWeapon(gun);
man->throwWeapon();
delete gun;
delete knife;
delete man;
}
int main() {
test();
return 0;
}