如何使观察者成为观察者模式中的默认观察者。例如,在本例中,来自这里
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()
}
}我的关注点还在于,通过设置一个默认的观察者来查看如何静态地通知而不是动态地通知观察者。
发布于 2015-11-19 14:32:41
我没有Scala来尝试它,但是您可以这样做:
import scala.collection.mutable.ArrayBuffer
object Observable {
val defaultObserver = { create your default here to do what you want }
}
trait Observable {
val observers = ArrayBuffer(Observable.defaultObserver)
... (the rest stays the same)通过函数删除默认观察者的能力的额外点是您想要的。
https://stackoverflow.com/questions/33778491
复制相似问题