Kotlin委托模式详解
掌握委托属性和类委托,减少样板代码,实现灵活的设计模式。 · 难度:入门 · +15XP
委托模式
Kotlin的委托模式允许你将类的实现或属性的getter/setter委托给另一个对象。使用by关键字实现。
类委托
通过委托实现接口,无需手动编写转发方法:
interface Base {
fun print()
}
class BaseImpl : Base {
override fun print() = println("BaseImpl")
}
class Derived(b: Base) : Base by b
fun main() {
Derived(BaseImpl()).print() // 输出 BaseImpl
}
委托属性
使用lazy、observable等标准委托:
val lazyValue: String by lazy {
println("首次计算")
"Hello"
}
fun main() {
println(lazyValue)
println(lazyValue)
}
| 委托类型 | 用途 |
|---|---|
| lazy | 延迟初始化,只计算一次 |
| observable | 监听属性变化 |
| vetoable | 允许拒绝修改 |
练习提示
使用observable委托创建一个属性count,每次修改时打印旧值和新值。