一、模板相关类
package com.study.template_method
abstract class HummerModel {
var alarmFlag = false
abstract fun start()
abstract fun stop()
abstract fun alarm()
abstract fun engineBoom()
fun setAlarm(alarmFlag: Boolean) {
this.alarmFlag = alarmFlag
}
fun isAlarm(): Boolean {
return alarmFlag
}
fun run() {
start()
engineBoom()
if (isAlarm()) {
alarm()
}
stop()
}
}
package com.study.template_method
class HummerH1Model : HummerModel() {
override fun start() {
println("悍马H1正在启动....")
}
override fun stop() {
println("悍马H1正在停止....")
}
override fun alarm() {
println("悍马H1发出警报....")
}
override fun engineBoom() {
println("悍马H1引擎发出轰鸣声....")
}
}
package com.study.template_method
class HummerH2Model : HummerModel() {
override fun start() {
println("悍马H2正在启动....")
}
override fun stop() {
println("悍马H2正在停止....")
}
override fun alarm() {
println("悍马H2发出警报....")
}
override fun engineBoom() {
println("悍马H2引擎发出轰鸣声....")
}
}
二、主程序调用
package com.study.template_method
fun main(args: Array<String>) {
var h1 = HummerH1Model()
h1.setAlarm(true)
h1.run()
var h2 = HummerH2Model()
h2.run()
}
三、运行结果