职责链模式(chain of responsibility)

本文深入探讨了Dota游戏中角色在受到不同类型的攻击时,装备如何通过特定机制减轻伤害的过程。通过实现装备和角色防御机制的层次处理,文章阐述了这种设计如何遵循开闭原则,避免逻辑膨胀,并为新装备的加入提供灵活的支持。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

怎么描述dota 中,一个rpg受到攻击,不同装备抵御不同攻击的过程呢?

比如ts运用魔法伤害攻击dr,这时候小黑身上有圆盾、相位、流浪斗篷等装备,判定过程自然是 圆盾、相位判定一下不能抵御魔法伤害,而流浪斗篷可以。

@interface Attack : NSObject 
{

}

@end
#import <Foundation/Foundation.h>
#import "Attack.h"

@interface AttackHandler : NSObject 
{
  @private
  AttackHandler *nextAttackHandler_;
}

@property (nonatomic, retain) AttackHandler *nextAttackHandler;

- (void) handleAttack:(Attack *)attack;

@end

这儿是想实现这样一种构思,装备和rpg都实现attackHandler接口,把rpg作为最底层的handler,当遭受一个袭击的时候从顶层装备开始层层处理,减轻受到的伤害。这样的好处是没有把所有的遇到袭击后的处理逻辑都存放在attackhandler当中,那样的话势必会造成处理逻辑过于庞大,而且当新出装备的时候都要修改整个逻辑,违反了开闭原则。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值