我正在使用Kotlin委託模式將多個組件組合成更大的組件。這加快了我的代碼,使它更易於閱讀,更模塊化,更一致等。所有好東西。然而,我正在努力的一件事是釋放我的代表的一個好的模式。他們大多有一個dispose()
的方法,我用它來採取退訂Rx
訂閱,取消Android的裝載機,暫停任務等。目前執行的照顧,我做的東西,如:Kotlin自動代碼調用委託模式
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()
}
}
手動調用處理上的所有委託方法感覺有點笨重 - 在Kotlin中有沒有一種優雅的方式(通過多態性,更多的委託等)來確保類自動調用委託的某些方法 - 在這種情況下,它是清理方法,但同樣適用於任何所有代表都需要做的操作。
嗯科特林格式不很好的堆棧溢出。 – Calin
是的,我之前在Java中使用過這種模式,當您不打算詳細描述靜態類型的體系結構時,它在那種環境中很棒。但是我正在嘗試使用Kotlin的代理模式https://kotlinlang.org/docs/reference/delegation.html,並且不可能像kaitlin屬性(懶惰實例化,可觀察模式等)那樣進行花哨的委派 - foo。 )。所有這些東西都允許你干涉委託對象,但是當你委託給接口的實現時,你不能做任何這些東西(至少我沒有發現如何!) – mikesol