Ada*_*hes 1 java observable kotlin
我真的很喜欢在 Kotlin 中使用接口的默认实现,尤其是像 Observable 这样的常见模式。这是我的界面,
interface Observable<T>{
// How do I cache this?
val observers: MutableList<Observer<T>>
get() = LinkedList<>()
fun addObserver(o:Observer<T>){
observers.add(o)
}
fun removeObserver(o:Observer<T>){
observers.remove(o)
}
fun notifyObservers(u:T){
for (o in observers){
o.update(u)
}
}
}
Run Code Online (Sandbox Code Playgroud)
该接口引用了 的列表observers,但调用每次get()都会返回一个新的。LinkedList()如何缓存 的值observers以便仅创建一次?我尝试过使用kotlin-lazy,但要么无法获得正确的语法,要么它不适用于接口。我的 IDE 抱怨“接口中不允许使用委托属性。”
更新
根据 Yoav 的回答,我已将界面更改为
interface Observable<T>{
val observers: MutableList<Observer<T>>
}
Run Code Online (Sandbox Code Playgroud)
然后在实现类中,
class MyObservable : Observable<String>
private val _observers = LinkedList<Observer<String>>()
override val observers: MutableList<Observer<String>>
get() = _observers
Run Code Online (Sandbox Code Playgroud)
有什么技巧可以让这个更简洁吗?
| 归档时间: |
|
| 查看次数: |
1819 次 |
| 最近记录: |