设计模式11-策略模式

文章目录

  • 一、策略模式
  • 二、例子


一、策略模式

定义了一系列封装好的了算法,它们之间可相互替换。

二、例子

#include 
#include 
#include 
#include 
using namespace std;

// 抽象武器策略
class Weapon_stgy {
     
public:
	virtual void UseWeapon() = 0;
};

class Knife : public Weapon_stgy {
     
public:
	virtual void UseWeapon() {
     
		cout << "use knife\n";
	}
};

class Gun : public Weapon_stgy {
     
public:
	virtual void UseWeapon() {
     
		cout << "use Gun\n";
	}
};

class Man {
     
public:
	void setWeapon(Weapon_stgy* p) {
     
		p_weapon = p;
	}

	void throwWeapon() {
     
		p_weapon->UseWeapon();
	}
private:
	Weapon_stgy* p_weapon;
};

void test() {
     
	Man* man = new Man;
	Weapon_stgy* knife = new Knife;
	Weapon_stgy* gun = new Gun;
	man->setWeapon(knife);
	man->throwWeapon();

	man->setWeapon(gun);
	man->throwWeapon();

	delete gun;
	delete knife;
	delete man;
}

int main() {
     

	test();
	
	return 0;
}

你可能感兴趣的:(设计模式)