使用接口委托时,有什么方法可以传递this
?这样可以实现很好的可组合性-但我找不到实现此目的的方法。表示类似:
interface Foo {
}
class FooImpl(bar: Bar) : Foo {
}
class Bar: Foo by FooImpl(this) {
}
只要FooImpl不需要像这样的参数,它就可以工作-但在那儿访问另一个类会很棒-也许有人知道一种方法。否则,如果这值得不保留,我也将很感兴趣-否则由于某种原因将不可能。
您可以将Bar类分为两个部分,例如后端和前端。
前端将负责声明与委托人的接口,后端将托管委托人并充当组成目标。
例如:
interface Foo {
fun sayHello(): String
}
class FooImpl(val bar: BarBackend) : Foo {
override fun sayHello() = "Hello from ${bar.compositionTarget()}!"
}
class BarBackend() {
val fooImpl: FooImpl = FooImpl(this)
fun compositionTarget() = "backend"
}
class BarFrontend(backend: BarBackend) : Foo by backend.fooImpl
fun main() {
val bar = BarFrontend(BarBackend())
println(bar.sayHello())
}