代理

类代理

代理模式已经被证明是实现继承的一个好选择,Kotlin无需引用任何代码,原生支持代理模式。如下,Derived类继承Base接口并且向一个特定的类代理了它的所有公共方法:

interface Base {
    fun print()
}

class BaseImpl(val x: Int) : Base {
    override fun print() { print(x) }
}

class Derived(b: Base) : Base by b

fun main(args: Array<String>) {
    val b = BaseImpl(10)
    Derived(b).print() // prints 10
}

父类型Derived中的by语句表示b将会存储在Derived对象内部,编译器将会为b自动生成Base的所有方法

results matching ""

    No results matching ""