策略模式

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;
}
上一篇下一篇

猜你喜欢

热点阅读