跟我一起学“仓颉”设计模式-职责链模式练习题
本章为大家详细的介绍了仓颉设计模式中职责链模式练习题的内容。
·
目录
一、练习题
1. 使用职责链模式,模拟军队打仗的下达命令,敌人数量小于1000,营长下达命令,敌人数量小于10000,团长下达命令。
类图

核心代码
package DesignPattern.responsibility
const NUMBER_1000 = 1000
const NUMBER_10000 = 10000
// 抽象处理者
public abstract class Officer {
protected var _optOfficer = Option<Officer>.None
protected let name: String
public init (name: String) {
this.name = name
}
public func process(number: Int64):Unit
public func setOfficer(officer: Officer){
this._optOfficer = officer
}
}
// 具体处理者
public class YingZhang <: Officer {
public YingZhang(name: String) {super(name)}
public func process(number: Int64):Unit {
if (number > 0 && number <= NUMBER_1000) {
println("敌人数量: ${number}, 营长: ${this.name}下达作战任务!")
} else {
match (this._optOfficer) {
case Some(officer) => officer.process(number)
case None => println("无营长")
}
}
}
}
public class TuanZhang <: Officer {
public TuanZhang(name: String) {super(name)}
public func process(number: Int64):Unit {
if (number > NUMBER_1000 && number < NUMBER_10000) {
println("敌人数量: ${number}, 团长: ${this.name}下达作战任务!")
} else {
match (this._optOfficer) {
case Some(officer) => officer.process(number)
case None => println("无团长")
}
}
}
}
测试代码
package DesignPattern
import DesignPattern.responsibility.*
main(): Int64 {
let tuanzhang = TuanZhang("李云龙")
tuanzhang.setOfficer(YingZhang("张大彪"))
tuanzhang.process(9000)
tuanzhang.process(500)
tuanzhang.process(45)
return 0
}
二、小结
本章为大家详细的介绍了仓颉设计模式中职责链模式练习题的内容,下一章,为大家带来命令模式的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉设计模式有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!
更多推荐
所有评论(0)