在Kotlin中,模板方法模式是一種行為設計模式,它在一個方法中定義了一個算法的骨架,允許子類在不改變算法結構的情況下重新定義某些步驟。Kotlin中的模板方法模式可以通過使用abstract class
和override
關鍵字來實現。
下面是一個簡單的Kotlin模板方法模式的例子:
// 抽象類,定義了模板方法的骨架
abstract class AbstractTemplate {
// 抽象方法,子類必須實現
abstract fun stepOne()
// 抽象方法,子類可以選擇性實現
abstract fun stepTwo()
// 模板方法,定義了算法的執行順序
fun templateMethod() {
stepOne()
stepTwo()
stepThree()
}
// 具體方法,子類無需實現
fun stepThree() {
println("Step three executed")
}
}
// 子類,實現了抽象方法
class ConcreteTemplate : AbstractTemplate() {
override fun stepOne() {
println("Step one executed")
}
override fun stepTwo() {
println("Step two executed")
}
}
fun main() {
val template = ConcreteTemplate()
template.templateMethod() // 輸出:Step one executed Step two executed Step three executed
}
在這個例子中,AbstractTemplate
是一個抽象類,它定義了一個模板方法templateMethod()
,以及兩個抽象方法stepOne()
和stepTwo()
。ConcreteTemplate
是AbstractTemplate
的子類,它實現了stepOne()
和stepTwo()
方法。當調用templateMethod()
時,它會按照定義的順序執行這些方法。
如果你想要在子類中改變算法的某些步驟,只需實現stepOne()
和stepTwo()
方法即可,無需修改templateMethod()
方法的定義。這就是模板方法模式的核心思想:將算法的結構固定,允許子類重新定義某些步驟。