目录

一、练习题

二、小结


一、练习题

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
}

二、小结

本章为大家详细的介绍了仓颉设计模式中职责链模式练习题的内容,下一章,为大家带来命令模式的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉设计模式有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!

Logo

讨论HarmonyOS开发技术,专注于API与组件、DevEco Studio、测试、元服务和应用上架分发等。

更多推荐