iOS设计模式解析(五)责任链模式
- 责任链模式:使多个对象都有机会处理请求,从而避免发送者和接受者之间发生耦合。
- 应用场景:
- 有多个对象可以处理请求,而处理程序只有在运行时才能确定
- 例如: 英雄联盟中伤害计算,伤害类型分为AP、AD、真实伤害(无视任何防御直接造伤害)。
- 结构分析:整个结构就在这个攻击处理器的抽象。抽象一个属性,下一个处理器(newxHandler)、抽象一个方法,处理攻击(handleAttack)
1 -(void)handleAttack:(attack *)attack{ 2 [nextHandler handleAttack:attack]; 3 }
handler
然后有魔法处理器、物理处理器继承攻击处理器并且重写了handleAttack方法。在使用的时候创建不同的处理期并且将nextHandler赋值。这样就可以构成一个链。比如链如(魔法处理器->物理处理器->人)那么一次物理攻击来了之后会交给魔法处理器调用HandleAttack来处理,其中发现魔法处理器不可以处理物理伤害,那么则调用【Next handleAttack:attack】而魔法处理器的next是物理处理器,这样就做到事件传递。正巧物理处理器可以处理物理伤害,那么这次伤害就被抵消。
- 总结延伸:Cocoa Touch中的响应链也是如此。事件在当前所在的lowestView中处理,发现响应不了,那么这个事件就会按照设定的响应链条传递给nextResponsder处理一直向上传递知道可以被响应或者crash
转载于:https://www.cnblogs.com/conorBlogs/p/5477225.html
iOS设计模式解析(五)责任链模式相关推荐
- 简易理解设计模式之:责任链模式——OA中请假流程示例
介绍: 责任链模式属于行为型设计模式.它的定义为:使多个对象都有机会处理请求,从而避免了请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,只到有对象处理它为止. 类图: ...
- 《java设计模式》之责任链模式
在阎宏博士的<JAVA与模式>一书中开头是这样描述责任链(Chain of Responsibility)模式的: 责任链模式是一种对象的行为模式.在责任链模式里,很多对象由每一个对象对其 ...
- Java描述设计模式(15):责任链模式
本文源码:GitHub·点这里 || GitEE·点这里 一.生活场景描述 1.请假审批流程 公司常见的请假审批流程:请假天数 当 day<=3 天,项目经理审批 当 3<day<= ...
- [设计模式-行为型]责任链模式(Chain of Responsibility)
概括 名称 Chain of Responsibility 结构 动机 使多个对象都有机会处理请求,从而避免请求的发送者和接收者之间的耦合关系.将这些对象连成一条链,并沿着这条链传递该请求,直到有一 ...
- 设计模式-请假流程-责任链模式
责任链模式的定义 首先我们可以先看一下责任链模式的定义: Avoid coupling the sender of a request to its receiver by giving mo ...
- 设计模式探索之责任链模式
责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这种模式给予请求的类型,对请求的发送者和接收者进行解耦.这种类型的设计模式属于行为型模式. ...
- 《JAVA设计模式系列》责任链模式
文章目录 责任链模式 责任链模式优缺点 应用场景 责任链模式的结构 实现流程 责任链模式 责任链模式(Chain of Responsibility Pattern)为请求创建了一个接收者对象的链.这 ...
- 【手写源码-设计模式15】-责任链模式-基于人事请假单工作流场景
1:主题拆解 ①基本介绍 ②人事请假单工作流模拟 ③责任链模式的优缺点 ④适用场景 ⑤应用实例 ⑥ASP.NET 管道模型 2:基本介绍 责任链模式很像异常的捕获和处理,当一个问题发生的时候,当前对象 ...
- [设计模式] javascript 之 责任链模式
责任链模式:定义 责任链接模式又称职责链模式,是一种对象的行为模式:它是一种链式结构,每个节点都有可能两种操作,要么处理该请求停止该请求操作,要么把请求转发到下一个节点,让下一个节点来处理请求:该模式 ...
- [Android设计模式之旅]——责任链模式
介绍 责任链模式(Chain of Responsibility Pattern)就是当我们发送一个请求后,沿着一个任务链执行,任务链上每个对象都能处理该请求,如果一个对象不处理,就会传递给下一个对象 ...
最新文章
- css绘制卡券优惠券_css3 绘制优惠券
- Effective stl---笔记
- 数组去重(包括es6)
- 【Qt】QModbusTcpConnectionObserver类
- HDU 2822 Dogs【两次bfs】
- bat 批处理获取时间语法格式
- ubuntu经常提示:检测到系统程序出现问题
- linux下的网桥介绍
- Spring Boot学习总结(5)——SpringBoot Jar应用Linux后台部署执行
- PostgreSQL 10 高可用 本地SSD盘 版本发布
- input[type=radio]自定义样式
- bcc语料库下载_大数据背景下BCC语料库的研制_荀恩东
- php中如何计算字符串长度,PHP字符串长度计算 - strlen()函数使用介绍
- ubuntu下载安装jdk
- 盘古开源:汽车芯片短缺怎样缓解?工信部回应热点问题
- 联通集团入选混改试点:电联合并已无希望
- python 小于号和大于号同时使用
- Pygame详解(十六):cursors 模块
- WPF引入OCX控件
- 王杰高中计算机老师,王杰 - 师资概况 - 南方科技大学
热门文章
- Atitit.php opcode虚拟机指令集 分类以及详细解释
- paip.c++ gui 库HtmLayout 的优缺点 QT优点
- 技术揭秘 | 如何设计 RQData 通讯协议
- (转)5分钟APIG实战: 使用Rust语言快速构建API能力开放
- 支付那些事儿III---一个BD汪眼中的产品I
- (转)NYU教授给写AI新闻的记者们写了一封推心置腹的信,你也应该读读
- (转)金融从业者将被人工智能取代?
- 亲历者说:Kubernetes API 与 Operator,不为人知的开发者战争
- 【图像加密】基于matlab GUI+Logistic+Tent+Kent+Henon图像加密与解密【含Matlab源码 1745期】
- 【目标定位】基于matlab循环增益卡尔曼滤波目标定位仿真【含Matlab源码 145期】