委托

委托 是Kotlin的一个重要功能,说的这么高大上 实际就是一个代理模式

在未来会出专们讲设计模式的 我先简单说一下代理模式

把某些功能 交由别人处理 就是代理模式

在Kotlin里 属性委托就是把 getValue 和 setValue 交由别的类进行处理。

object SpringProxy {

    inline operator fun <reified T> getValue(ref: Any?, property: KProperty<*>): T {
        return SpringApi.getApplicationContext().getBean(T::class.java)
    }

}

used

private val service: IBitzherService by SpringProxy

这样就可以把这个属性的功能转化为 获取SpringBoot的Bean 😀

当然 例子中只写了 getValue 所以可以委托给 val 类型的变量

如果你要委托 var 类型的变量 还需要定义一个 setValue