首页 » Swift » 责任链模式Swift版

责任链模式Swift版

原文 http://blog.csdn.net/tiantianios/article/details/78476352

2017-11-09 02:02:33阅读(482)

事件角色案例

1、员工请假,要走流程。

2、ceo可以批10天假。

3、总监可以批5天假。

4、项目负责人可以批3天假。

5、由员工请假的天数决定哪个领导审批。

运行环境

1、xcode8以上

2、iOS10以上

3、Swift3.0以上

步骤

第一步:新建抽象处理类->TXP_Leader(领导类)

 

//领导抽象类

//第一个特点:定义下一个节点

//第二个特点:定义处理方法


class TXP_Leader: NSObject {


    var nextLeader:TXP_Leader?

    //第二个特点:定义处理方法

    final func handleExpense(expense:TXP_LeaveDay) {

        if expense.getDay() <= self.limit() {

            //满足要求,执行当前处理

            self.handle(expense: expense)

        } else {

            //不满足要求执行下一个节点

            self.nextLeader?.handleExpense(expense: expense)

        }

    }

    

    func handle(expense:TXP_LeaveDay) {

        

    }

    //限制天数

    func limit() -> Int {

        return 0

    }

}

 第二步:新建抽象假条类(TXP_LeaveDay)

 

//请假天数抽象类

class TXP_LeaveDay: NSObject {


    //请假类型名称(事假,病假,婚假)

    var title:String?

    //请假天数

    var day:Int?

    //请假具体原因

    var body:String?

    

    init(title:String?,body:String?,day:Int) {

        super.init()

        self.title = title

        self.body = body

        self.day = day

    }

    

    func getTitle() -> String? {

        return self.title

    }

    

    func getBody() -> String? {

        return self.body

    }

    

    func getDay() -> Int {

        return self.day!

    }

}

 第三步:新建具体的领导类

    TXP_CEO_Leader、TXP_Majordomo_Leader、TXP_Manager_Leader

 

//公司老板CEO

class TXP_CEO_Leader: TXP_Leader {


    //CEO可以批10天假

    override func limit() -> Int {

        return 10

    }

    

    override func handle(expense: TXP_LeaveDay) {

        print("请假标题是:\(expense.getTitle()!)")

        print("请假内容是:\(expense.getBody()!)")

        print("请假天数是:\(expense.getDay())")

        print("CEO已批假....")

    }

}

//公司总监

class TXP_Majordomo_Leader: TXP_Leader {


    //总监可以批5天假

    override func limit() -> Int {

        return 5

    }

    

    override func handle(expense: TXP_LeaveDay) {

        print("请假标题是:\(expense.getTitle()!)")

        print("请假内容是:\(expense.getBody()!)")

        print("请假天数是:\(expense.getDay())")

        print("总监已批假....")

    }

}


最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示

按 Ctrl+D 键,
把本文加入收藏夹