温馨提示×

Kotlin模板方法模式如何处理模板方法的覆写

小樊
81
2024-11-02 15:10:29
栏目: 编程语言

在Kotlin中,模板方法模式可以通过定义一个抽象类来实现,这个抽象类包含了一个抽象的子方法(即模板方法)和一组具体的子方法。具体的子方法可以在抽象类中实现,也可以在子类中覆写。下面是一个简单的示例:

abstract class AbstractTemplate {
    // 模板方法
    fun templateMethod() {
        step1()
        step2()
        step3()
    }

    // 具体子方法1,可以在抽象类中实现,也可以被子类覆写
    fun step1() {
        println("AbstractTemplate step1")
    }

    // 具体子方法2,可以在抽象类中实现,也可以被子类覆写
    fun step2() {
        println("AbstractTemplate step2")
    }

    // 具体子方法3,可以在抽象类中实现,也可以被子类覆写
    fun step3() {
        println("AbstractTemplate step3")
    }
}

class ConcreteTemplate : AbstractTemplate() {
    // 覆写具体子方法1
    override fun step1() {
        println("ConcreteTemplate step1")
    }

    // 覆写具体子方法2
    override fun step2() {
        println("ConcreteTemplate step2")
    }
}

fun main() {
    val template = ConcreteTemplate()
    template.templateMethod()
}

在这个示例中,AbstractTemplate是一个抽象类,它定义了一个模板方法templateMethod和三个具体子方法step1step2step3ConcreteTemplateAbstractTemplate的一个子类,它覆写了step1step2两个具体子方法。

当我们调用ConcreteTemplatetemplateMethod方法时,它会按照模板方法的定义依次调用step1step2step3。由于step1step2ConcreteTemplate中被覆写,所以它们的输出将是ConcreteTemplate中定义的版本。

0