【发布时间】:2023-03-05 05:38:01
【问题描述】:
我是 Kotlin 编程的新手,我已经设法遇到了经典的循环依赖问题 - 我知道 Kotlin 可以应对这些问题,但我想知道如何改变我的设计以避免它。我应该在下面使用哪些结构或 Kotlin 功能?
import MyClass
interface MyInterface {
fun useMyClass(myInstance: MyClass)
}
import MyInterface
class MyClass(myList: List<MyInterface>) {
val storedList: List<MyInterface> = myList
var myValue: Int = 10
}
我希望MyClass 存储多个实现MyInterface 的对象,但我也希望这些对象中的每一个都引用它们已传递给的类,即useMyClass 的每个调用都将具有签名useMyClass(this).
例如,我可以创建一个类
class ImplementingMyInterfaceClass(): MyInterface {
override fun useMyClass(myInstance: MyClass) {
myInstance.myValue += 10
}
}
并在MyClass 内的某个地方调用它:
ImplementingMyInterfaceClass().useMyClass(this)
从技术上讲,我可以在中间创建另一个构造,供MyInterface 使用并由MyClass 继承/实现,但这感觉不正确。有什么建议吗?
注意:在我的具体问题中,将MyInterface 的每个实现视为一种“修饰符”可能会有所帮助(因为它会修改类的实例) - MyClass 实例应该注意它的修饰符和每个修饰符都应该能够修改该实例。
【问题讨论】:
标签: kotlin design-patterns circular-dependency