Kotlin自动代码调用委托模式

我正在利用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中是否有一个优雅的方法(通过多态性,更多的委托等​​)来确保类自动调用委托的某些方法 – 在这种情况下,它是清理方法,但是所有代表都需要做的操作也是一样的。

一个有用的模式将使用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的启发,特别是基本用例https://github.com/android10/Android-CleanArchitecture/blob/master/domain/src/main/java/com/ fernandocejas / android10 /样品/域/交互件/ UseCase.java