责任链设计模式在AO审批流程的使用

在流程审批之中每个角色有很多的职责限制和上下级关系,比如一个请假制度,就会涉及到组长,项目经理,总经理签字的流程,当然了,你要是开小差溜出去一会不被逮着也是没关系的酷

下面我们说一场景:A要请假,人事问你请几天:1天,组长批准就行,2天项目经理,3以上总经理批

我们就来分析:

首先审批的人有共性:检查是否在职权之内和呈递上级两个动作

protocol Teamer{

    func checkDay( day: Int)

    func doIt()

}

然后就是具体的Leader类

class Leader: Teamer {

扫描二维码关注公众号,回复: 409860 查看本文章

    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)



 

猜你喜欢

转载自yulongle.iteye.com/blog/2225592