Swift 06 职责链模式 Chain of Responsibility

/*
大宏药业管理层

行政总裁 卡卡: 审批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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值