我正在利用Kotlin委托模式将几个组件混合并匹配到更大的组件中。这加快了我的代码,使其更容易阅读,更模块化,更一致等所有好东西。然而,我正在努力解决的一件事是释放我的代表的好模式。他们中的大多数都使用dispose()
方法来处理取消订阅Rx
订阅,取消Android加载程序,暂停执行任务等等。目前,我正在做类似的事情:
interface Disposable {
fun dispose()
}
interface A: Disposable {
}
interface B: Disposable {
}
class AImpl: A {
fun dispose(){}
}
class BImpl: B {
fun dispose(){}
}
class Foo(val a = AImpl(), val b = BImpl(): A by AImpl, B by BImpl {
override fun dispose() {
a.dispose()
b.dispose()
}
}
在所有委托方法上手动调用dispose感觉有点笨拙 - 在Kotlin中是否有一种优雅的方式(通过多态,更多委托等)来确保类自动调用某些委托方法 - 在这种情况下,它是干净的方法,但同样可以应用于所有代表需要做的任何操作。
答案 0 :(得分:0)
一个有用的模式将使用CompositeDisposable
所以你可以按照这一行开设一些课程
val disposables: CompositeDisposable
fun addDisposable(val disposable: Disposable) disposables.add(disposable) end
fun dispose if (!disposables.isDisposed()) {
disposables.dispose(); } end
这受https://github.com/android10/Android-CleanArchitecture启发,特别是基本用例{{3}}