#include<iostream>
using namespace std;
//武器策略
class WeaponStrategy {
public:
virtual void UseWeapon() = 0;
};
//匕首策略
class KnifeStrategy :public WeaponStrategy {
public:
virtual void UseWeapon() {
cout << "使用匕首" << endl;
}
};
//AK策略
class AK47Strategy :public WeaponStrategy {
public:
virtual void UseWeapon() {
cout << "使用AK47" << endl;
}
};
class Character {
public:
//设置武器策略
void setWeaponStrategy(WeaponStrategy* weaponStrategy) {
pWeaponStrategy = weaponStrategy;
}
void UseWeapon() {
pWeaponStrategy->UseWeapon();
}
private:
WeaponStrategy* pWeaponStrategy;
};
void test() {
Character* character = new Character;
WeaponStrategy* strategy = new KnifeStrategy;
character->setWeaponStrategy(strategy);
character->UseWeapon();
delete character;
delete strategy;
}
int main() {
test();
cin.get();
return 0;
}