【发布时间】:2016-02-20 02:18:32
【问题描述】:
如何让观察者成为观察者模式中的默认观察者。例如在这个例子中,来自here:
import scala.collection.mutable.ArrayBuffer
// Abstract implementation
trait Observable {
val observers = ArrayBuffer[Observer]()
def notifyObservers() {
for(observer <- observers)
observer.notification()
}
def addObserver(observer:Observer) {
observers += observer
}
def removeObserver(observer:Observer) {
observers -= observer
}
}
trait Observer {
def notification(): Unit
}
// Concrete Implementation
class SomeObservable extends Observable
class SomeObserver extends Observer {
override def notification() {
println("do something here: SomeObserver")
}
}
class AnotherObserver extends Observer {
override def notification() {
println("do something here: AnotherObserver")
}
}
// Client
object ObserverClient {
def main(args: Array[String]) {
val observable = new SomeObservable()
val observer1 = new SomeObserver()
val observer2 = new AnotherObserver()
observable.addObserver(observer1)
observable.addObserver(observer2)
observable.notifyObservers()
observable.removeObserver(observer2)
observable.notifyObservers()
}
}
我还担心,通过将观察者设为默认值,看看我如何可以静态通知而不是动态通知观察者。
【问题讨论】:
-
说,你想要一个自定义的观察者列表(就像你现在做的那样),但也想要一个固定的观察者,它总是在那里并且做一些特定的事情?
-
@DanielL。 ,是的,这是我的意图。