责任链模式在 iOS 中的应用

名称

责任链模式 Chain of Responsibility Pattren

用途

  • 解耦消息的发送者和接受者。
  • 让多个对象有机会处理某个请求(UI 响应链、Planck 中间件、流式业务流程(OA)、过滤器)。

实现

  • 为某个请求创建一个对象链,每个对象依次检查次请求并对其进行处理,或者将它传递给链中的下一个对象。
  • 链的实现:使用现成的链(如继承关系)或自己实现新链(next指针)
  • 链上的每个对象都采用同样的接口处理或上抛事件

优点

  • 解耦请求的发送者和接收者
  • 简化对象(不关心链结构)
  • 链内成员可以灵活增删调序

缺点

  • 不保证请求一定被处理
  • 灵活的长链可能给 Debug 增加复杂度

Cocoa 中的应用

  • Responder Chain 使得交互事件可以通过链表依次传递来被处理(或忽略)消息。
  • 与用户交互的对象(如Application, Window, View, ViewController)都是 NSResponder/UIResponder 的子类。
  • 首先确定 first responder (触摸事件采用 Hit-Test),随后 responder 决定是否处理事件或通过 nextResponder 继续传递。
  • 这个响应链大部分情况下是 View 的继承链,Root UIView 的 next responder 是 UIViewController,VC 的下一个是 UIWindow,最后是 UIApplocation 的 delegate 且为 UIResponder 的子类;当然也可以通过 setNextResponder: 来改变它。

image

自己动手实现(Objective-C Code)

1. Array 在外部维护链

YFHandler
@interface YFHandler : NSObject

@property (assign, nonatomic, readwrite) NSUInteger index;

- (BOOL)handleBusiness:(NSUInteger)index;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值