设计模式之策略模式

策略模式是一种设计模式,它将算法族封装在独立的类中,允许它们在运行时互换。该模式遵循变化与不变化分离、针对接口编程和多用组合少用继承的原则。通过一个动作冒险游戏的例子,展示了如何使用策略模式,让角色可以灵活使用不同的武器战斗。在C语言中,策略模式同样可以实现,通过定义接口结构、注册接口和使用钩子函数调用变化的方法。
摘要由CSDN通过智能技术生成

设计模式之策略模式

策略模式定义了算法族,分别封装起来,让他们之间可以互相替换,此模式让算法的变化独立于使用算法的客户。策略模式体现了三个设计原则:

Ø  原则一、变化与不变化分离原则,将应用中可能出现的变化部分封装起来,和不变的部分进行分离,使不变的部分不受影响,代码变化导致的不可控因素变少,系统更具有弹性;

Ø  原则二、针对接口编程,而不是对实现编程,接口代表是每个行为,提供专门类来实现这些行为。

Ø  原则三、多用组合,少用继承。使用组合不仅可以将算法族封装成类,也可以“在运行时动态改变行为”

策略模式的模型如下:

这样实现的有点:

一、接口的变换不影响对象;某些对象不具有的接口,可以不实现该对象的接口。

二、接口与实现解耦,接口可以重用;.

三、可以通过“设定方法”动态地改变对象的行为;

引用书中的例子,一个动作冒险游戏,里面有4中角色:King,Queen,Knight和Troll,他们可以使用不同的武器进行战斗,武器包括:匕首,弓箭,斧头和宝剑,我们可以这样做:

首先,提取出可变的部分使用武器战斗的接口作为一个方法族,并且分别实现匕首、弓箭、斧头和宝剑的战斗方法。

ClassWeaponBehavior

{

         Virtual void UseWeapon()=0;

         Virtu

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值