设计模式-策略模式

行为型-策略模式

//策略模式
/*策略模式定义了一系列算法,并将每个算法封装起来,而且使它们
还可以相互替换。策略模式让算法独立于使用它的客户而独立变化*/

#include <iostream>
using namespace std;

//抽象武器 武器策略
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 Character{
public:
    void setWeapon(WeaponStrategy* weapon){
        this->pWeapon = weapon;
    }
    void ThrowWeapon(){
        this->pWeapon ->UseWeapon();
    }

public:
    WeaponStrategy* pWeapon;
};

void test01(){
    //创建角色
    Character* character = new Character;

    //武器策略
    WeaponStrategy* knife = new Knife;
    WeaponStrategy* ak47 = new AK47;

    character->setWeapon(knife);
    character->ThrowWeapon();

    character->setWeapon(ak47);
    character->ThrowWeapon();

    delete ak47;
    delete knife;
    delete character;
}

int main()
{
    test01();

    system("pause");
    return 0;
}

posted @ 2023-10-14 19:32  洋綮  阅读(6)  评论(0)    收藏  举报