责任链设计模式在AO审批流程的使用
在流程审批之中每个角色有很多的职责限制和上下级关系,比如一个请假制度,就会涉及到组长,项目经理,总经理签字的流程,当然了,你要是开小差溜出去一会不被逮着也是没关系的
下面我们说一场景:A要请假,人事问你请几天:1天,组长批准就行,2天项目经理,3以上总经理批
我们就来分析:
首先审批的人有共性:检查是否在职权之内和呈递上级两个动作
protocol Teamer{
func checkDay( day: Int)
func doIt()
}
然后就是具体的Leader类
class Leader: Teamer {
privatevar leader:Teamer?
privatevar day:Int?
privatevar dayLimit:Int?
init( leader:Teamer?){
self.leader = leader;
}
func checkDay( day: Int)
}
func doIt(){
}
这个类需要完成检测工功能和提交上级的动作。
那么我们怎么去确定哪个是终极Boss,嘿嘿,终极Boss是没有Leader的。思路有了我么就完善审批和呈交上级的code
func checkDay( day:Int){
self.day = day
iflet aLeader = self.leader{
let aDy = self.day
let aLimit = self.dayLimit
if aLimit <= aDy{
println(" 职责审批限制\(self.dayLimit!) 呈交上级审批\(self.day!)")
aLeader.checkDay(self.day!)
}else{
doIt()
}
}else{
doIt()
}
}
func doIt(){
println("审批:\(self.day!)")
}
}
好了,实例出来了,我们就开始测试是否通过
var leader1 = Leader( leader: nil)
var leader2 = Leader(leader: leader1)
var leader3 = Leader(leader: leader2)
var leader4 = Leader(leader: leader3)
leader4.dayLimit = 1
leader3.dayLimit = 3
leader2.dayLimit = 5
leader4.checkDay(2)
leader4.checkDay(4)
leader4.checkDay(6)
上一篇: 设计模式之责任链模式(tomcat filters)
下一篇: Docker 设置http代理