Swift学习之职责链模式详解
来源:互联网 发布:知世故而不世故, 编辑:程序博客网 时间:2024/06/16 12:09
本文和大家分享的主要是swift中职责链模式相关内容,一起来看看吧,希望对大家学习swift有所帮助。
职责链模式将多个对象组成一条职责链,然后按照它们在之职责链上的顺序一个个找出到底应该谁来处理负责.(Avoid coupling the sender of a request to itsreceiver by giving morethan one objecta chance to handle the request.Chain the receiving objects andpassthe request along the chain until an object handles it. )
职责链.jpg
处理者角色(Hanlder):定义一个处理请求的接口,和一个后继连接(可选).
具体的处理者(ConcreteHandler):处理它所负责的请求,可以访问后继者,如果可以处理请求则处理,否则将该请求转给他的后继者.
客户类(Client):向一个链上的具体处理者ConcreteHandler对象提交请求.
职责链的模式现实生活中例子有很多比如报销,你需要找你的主管,主管需要找上级,层层上报,申请涨薪,贷款申请,医院看病,按照社会的分工每个人都有自己的位置,需要有人为最终的事情负责.
以报销为例子:
class Employee {
var superior:Employee?
func applyReimbursement(money:Float) { }
}
class Director: Employee { // 主管
override func applyReimbursement(money: Float) {
if money <= 0 {
return
}
if money <= 200 {
print("\(money)报销---主管同意")
} else {
self.superior?.applyReimbursement(money: money)
}
}
}
class TechnologyLeader: Employee { // 技术负责人
override func applyReimbursement(money: Float) {
if money <= 200 {
return
}
if money > 200 && money < 1000 {
print("\(money)报销---技术负责人同意")
} else {
self.superior?.applyReimbursement(money: money)
}
}
}
职责链模式弱化了客户端和处理端之间关系,客户端只需要发起请求即可获得最终的结果,不用关心最终是谁处理的事情,同样因为处理是封闭的,也可以动态的修改处理过程,带来的问题可能会造成处理延迟.
来源:简书
阅读全文
0 0
- Swift学习之职责链模式详解
- 学习日记之职责链模式和Effective C++
- 职责链模式学习笔记
- 设计模式 之 职责链
- 设计模式之职责链
- 设计模式之职责链
- js之职责链模式
- 设计模式之单一职责原则学习
- 设计模式学习之单一职责原则
- 设计模式学习----职责链模式
- 设计模式入门学习 职责链模式
- 设计模式学习(十六):职责链模式
- 设计模式学习笔记--职责链模式
- 设计模式学习--职责链模式
- 设计模式之职责链模式
- 设计模式之职责链模式
- C# 设计模式之 职责链模式
- 设计模式之职责链模式
- python单引号、双引号、三引号
- NAT技术与代理服务器
- 并转串模块设计
- 剑指offer——二叉搜索树的后序遍历序列(思路不错)
- [CodeM初赛A轮]C
- Swift学习之职责链模式详解
- Zabbix的安装
- pluralize方法
- WebView性能优化
- ios 移除UIView上所有的subViews
- 漫谈并发编程:用MPI进行分布式内存编程(入门篇)
- Java实现-旋转图像
- [CodeM初赛A轮]D
- 漫谈并发编程:Future模型(Java、Clojure、Scala多语言角度分析)