策略模式
2020-11-24 本文已影响0人
StevenHD
一、策略模式
C/S,角色玩家就是context,武器就是stratgy,然后枪,刀这些就是stratgy的子类
策略就是武器库,玩家需要做的接口只有一个,就是fight()
。
计算器的加减乘除也可以使用策略模式,使用人的接口是
算
,然后+ - * /
这些相当于不同的武器,直接封装好就行。
context更多的是设计策略
——SetWeapon()
,然后执行策略
——fight()
#include <iostream>
using namespace std;
class Weapon
{
public:
virtual void use() = 0;
};
class Knife : public Weapon
{
public:
void use()
{
cout << "use knife kill enemy" << endl;
}
};
class Gun : public Weapon
{
public:
void use()
{
cout << "use Gun kill enemy" << endl;
}
};
class Sprite
{
public:
Sprite(Weapon *wp)
{
_wp = wp;
}
void setWeapon(Weapon *wp)
{
_wp = wp;
}
void fight()
{
_wp->use();
}
private:
Weapon * _wp;
};
int main()
{
Knife k;
Gun g;
Sprite sp(&k);
sp.fight();
sp.setWeapon(&g);
sp.fight();
sp.setWeapon(&k);
sp.fight();
return 0;
}