/*
大宏药业管理层
行政总裁 卡卡: 审批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)