1 委托模式简介
委托模式的类图结构如下。
对应的 Kotlin 代码如下。
fun main() {
var baseImpl = BaseImpl()
var baseWrapper = BaseWrapper(baseImpl)
baseWrapper.myFun1() // 打印: BaseImpl, myFun1
baseWrapper.myFun2() // 打印: BaseImpl, myFun2
}
interface Base {
fun myFun1()
fun myFun2()
}
class BaseWrapper(var baseImpl: Base): Base {
override fun myFun1() {
baseImpl.myFun1()
}
override fun myFun2() {
baseImpl.myFun2()
}
}
class BaseImpl: Base {
override fun myFun1() {
println("BaseImpl, myFun1")
}
override fun myFun2() {
println("BaseImpl, myFun2")
}
}
2 Kotlin 委托模式
Kotlin 可以简化 BaseWrapper,简化后的代码如下。
fun main() {
var baseImpl = BaseImpl()
var baseWrapper = BaseWrapper(baseImpl)
baseWrapper.myFun1() // 打印: BaseImpl, myFun1
baseWrapper.myFun2() // 打印: BaseImpl, myFun2
}
interface Base {
fun myFun1()
fun myFun2()
}
class BaseWrapper(var baseImpl: Base): Base by baseImpl
class BaseImpl: Base {
override fun myFun1() {
println("BaseImpl, myFun1")
}
override fun myFun2() {
println("BaseImpl, myFun2")
}
}