c++策略模式实现

策略模式:

当一个成员函数在不同场景表现不同时,我们往往会在这个成员函数种加入许多的判断的语句来判断我们具体应该执行什么步骤 这明显不符合开闭原则 当我们要加入一种新情况的时候 又需要去修改这个类 那么这个时候策略模式就登场了 他讲这个成员函数的具体实现和该类分离 让该类依赖于一个抽象的策略类 每次使用该成员函数时 通过选择不同的策略子类来决定具体应该做啥

uml图:

c++实现代码:

//策略模式核心
//策略模式作为一种软件设计模式,指对象有某个行为,但是在不同的场景中,该行为有不同的实现算法。
//比如一个角色要使用技能 那他的技能肯定有非常多种的 那每一种技能我们都要去写一个对应的成员函数嘛?
//当然不是 我们当然希望只写一个成员函数 useskills 然后要符合开闭原则 这个useskills永远都不变 那么我们的策略模式都登场了
//定义了一组算法(业务规则);
//封装了每个算法;
//这族的算法可互换代替(interchangeable)。
//符合开闭原则 可以增加任意技能
//符合依赖倒置原则 人物没有依赖具体技能类 而是依赖抽象类
class skills
{
public:
	virtual void useskills() = 0;
};
class fireskill :public skills
{
public:
	virtual void useskills()
	{
		//dosometing to use fire
	}
};
class waterskill :public skills
{
public:
	virtual void useskills()
	{
		//dosometing to use water
	}
};
class hero
{
public:
	void useskills(skills * skill)
	{
		skill->useskills();
	}
};

猜你喜欢

转载自blog.csdn.net/qq_16401691/article/details/128228746