策略模式:定义了一系列算法,并将每一个算法封装起来,而且使它们还可以互相替换。策略模式让算法独立于使用它的客户而独立变化
//抽象武器 武器策略
class WeaponStrategy{
public:
virtual void UseWeapon() = 0;
};
//实现武器细节
class Knife : public WeaponStrategy{
public:
virtual void UseWeapon(){
cout << "使用匕首" << endl;
}
};
class AK47 : public WeaponStrategy{
public:
virtual void UseWeapon(){
cout << "使用AK47" << endl;
}
};
//实现策略
class Charater{
public:
void SetWeapon(WeaponStrategy* Weapon){
this->pWeapon = Weapon;
pWeapon->UseWeapon();
}
public:
WeaponStrategy* pWeapon;
};
int main(){
Charater* charater = new Charater;
WeaponStrategy* knife = new Knife;
WeaponStrategy* ak47 = new AK47;
charater->SetWeapon(knife);
charater->SetWeapon(ak47);
delete knife;
delete ak47;
return 0;
}