类代理
代理模式 给实现继承提供了很好的代替方式, Kotlin 在语法上支持这一点,所以并不需要什么样板代码。Derived
类可以继承 Base
接口并且指定一个对象代理它全部的公共方法:
interface Mother {
fun color()
}
/**实现*/
class Jones(val color : String) : Mother {
override fun color() {
println(color)
}
}
class Cotton(m : Mother) : Mother by m
fun main() {
val j = Jones(10)
Cotton(m).color()
}
在 Cotton 的父类列表中的 by 从句会将 j 存储在 Cotton 内部对象,并且编译器会生成 Mother 的所有方法并转给 j。