美文网首页
策略模式

策略模式

作者: StevenHD | 来源:发表于2020-11-24 13:05 被阅读0次

    一、策略模式

    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;
    }
    

    相关文章

      网友评论

          本文标题:策略模式

          本文链接:https://www.haomeiwen.com/subject/pfeiiktx.html