/*
大宏药业管理层

行政总裁 卡卡: 审批3万元以下订单
经理 路飞:审批2万元以下订单
主任 白云:审批1万元以下订单
*/

class RequestOrder {
    var p_doAmount : Double = 0.0
    var p_mOrderNum : Int = 0
    var p_stProductOrder : String = ""
    
    init(p_doInputAmount : Double, p_mInputOrderNum : Int, p_stInputProductOrder : String){
        p_doAmount = p_doInputAmount
        p_mOrderNum = p_mInputOrderNum
        p_stProductOrder = p_stInputProductOrder
    }
    
    func setAmount(p_doInputAmount : Double) {
        p_doAmount = p_doInputAmount
    }
    
    func getAmount() -> Double {
        return p_doAmount
    }
}

class Approver {
    var successor = Approver()
    var p_stAppName : String = ""
    
    func approver (p_stInputApprName : String) {
        p_stAppName = p_stInputApprName
    }
    
    func setSuccessor(p_obSucessor : Approver) {
        successor = p_obSucessor
    }
    
    func processRequest(p_obInputOrder : RequestOrder) { }
}

class Director : Approver {
    var p_stDirectorName : String = ""
    
    init(p_stInputName : String) {
        p_stDirectorName = p_stInputName
    }
    
    override func processRequest(p_obInputOrder : RequestOrder) {
        if(p_obInputOrder.getAmount() < 100000) {
            print(" \(p_stDirectorName) approves \(p_obInputOrder.getAmount)")
        } else {
            successor.processRequest(p_obInputOrder: p_obInputOrder)
        }
    }
}

class Manager : Approver {
    var p_stManagerName : String = ""
    
    init(p_stInputName : String) {
        p_stManagerName = p_stInputName
    }
    
    override func processRequest(p_obInputOrder : RequestOrder) {
        if(p_obInputOrder.getAmount() < 200000) {
            print("Manager \(p_stManagerName) approves \(p_obInputOrder.getAmount)")
        } else {
            successor.processRequest(p_obInputOrder: p_obInputOrder)
        }
    }
}

var KaKa = Director(p_stInputName: "KaKa")
var LuFei = Manager(p_stInputName: "LuFei")

KaKa.setSuccessor(p_obSucessor: LuFei)

var p_obRequestOrder = RequestOrder(p_doInputAmount: 1000.0, p_mInputOrderNum: 1, p_stInputProductOrder: "Paracetamol")

KaKa.processRequest(p_obInputOrder: p_obRequestOrder)

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 kk匡 的頭像
    kk匡

    kk匡的日記&學習筆記

    kk匡 發表在 痞客邦 留言(0) 人氣()