溫馨提示×

Kotlin模板方法模式如何實現(xiàn)

小樊
81
2024-11-02 16:02:29
欄目: 編程語言

在 Kotlin 中,模板方法模式可以通過定義一個抽象類來實現(xiàn),這個抽象類包含了一個算法的骨架,以及一些抽象方法

// 定義一個抽象類 AbstractCalculator,其中包含了一個抽象方法 calculateResult
abstract class AbstractCalculator {
    // 定義一個抽象方法 calculateResult,子類需要實現(xiàn)這個方法
    abstract fun calculateResult(a: Int, b: Int): Int

    // 定義一個模板方法 performCalculation,用于執(zhí)行整個計算過程
    fun performCalculation(a: Int, b: Int) {
        val intermediateResult = performIntermediateCalculation(a, b)
        val result = calculateResult(intermediateResult, b)
        println("Result: $result")
    }

    // 定義一個抽象方法 performIntermediateCalculation,用于執(zhí)行中間計算過程
    // 這個方法可以在子類中重寫,以改變中間計算過程
    abstract fun performIntermediateCalculation(a: Int, b: Int): Int
}

// 定義一個具體子類 IntegerCalculator,實現(xiàn)了 AbstractCalculator 中的抽象方法
class IntegerCalculator : AbstractCalculator() {
    override fun calculateResult(a: Int, b: Int): Int {
        return a + b
    }

    override fun performIntermediateCalculation(a: Int, b: Int): Int {
        return a * b
    }
}

fun main() {
    val calculator = IntegerCalculator()
    calculator.performCalculation(3, 4) // 輸出 "Result: 15"
}

在這個例子中,我們定義了一個抽象類 AbstractCalculator,其中包含了一個抽象方法 calculateResult 和一個抽象方法 performIntermediateCalculationperformCalculation 方法是模板方法,它負責(zé)執(zhí)行整個計算過程,包括調(diào)用抽象方法 performIntermediateCalculationcalculateResult

我們還定義了一個具體子類 IntegerCalculator,實現(xiàn)了 AbstractCalculator 中的抽象方法。這樣,當(dāng)我們使用 IntegerCalculator 類時,它將按照模板方法 performCalculation 中定義的順序執(zhí)行計算過程。

0