Kotlin自动代码调用委托模式

时间:2017-05-27 12:55:52

标签: android 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中是否有一种优雅的方式(通过多态,更多委托等)来确保类自动调用某些委托方法 - 在这种情况下,它是干净的方法,但同样可以应用于所有代表需要做的任何操作。

1 个答案:

答案 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}}