跟我一起学“仓颉”设计模式-状态模式练习题
本章为大家详细的介绍了仓颉设计模式中状态模式练习题的内容。
·
目录
一、练习题
1. 请用状态模式模拟串联电路的两个小灯泡的亮与灭(注意:两个小灯泡应该同时亮或者同时灭)。
类图

核心代码
package DesignPattern.state
// 抽象状态类
public abstract class BulbState {
public func on(bulb: Bulb): Unit
public func off(bulb: Bulb): Unit
}
// 打开状态
public class OnState <: BulbState {
public override func on(bulb: Bulb) {
println("${bulb.name}已经打开!")
}
public override func off(bulb: Bulb) {
println("${bulb.name}关闭")
bulb.setState(Bulb.getState("off"))
}
}
// 关闭状态
public class OffState <: BulbState {
public override func on(bulb: Bulb) {
println("${bulb.name}打开!")
bulb.setState(Bulb.getState("on"))
}
public override func off(bulb: Bulb) {
println("${bulb.name}已经关闭")
}
}
// 环境类
public class Bulb {
public var name: String = ""
private static var currentState: BulbState
private static var onState: BulbState
private static var offState: BulbState
static init() {
onState = OnState()
offState = OffState()
currentState = onState
}
func setState(state: BulbState) {
currentState = state
}
static func getState(state: String): BulbState {
if (state == "on") {
return onState
} else {
return offState
}
}
public func on() {
currentState.on(this)
}
public func off() {
currentState.off(this)
}
}
测试代码
package DesignPattern
import DesignPattern.state.*
main(): Int64 {
let bulb1 = Bulb()
bulb1.name = "小灯泡1"
let bulb2 = Bulb()
bulb2.name = "小灯泡2"
bulb1.on()
bulb2.on()
bulb1.off()
bulb2.off()
bulb2.on()
bulb1.on()
return 0
}
二、小结
本章为大家详细的介绍了仓颉设计模式中状态模式练习题的内容,下一章,为大家带来策略模式的内容。最后,创作不易,如果大家觉得我的文章对学习仓颉设计模式有帮助的话,就动动小手,点个免费的赞吧!收到的赞越多,我的创作动力也会越大哦,谢谢大家🌹🌹🌹!!!
更多推荐
所有评论(0)