-
Notifications
You must be signed in to change notification settings - Fork 7
9.2 믹스인으로서의 트레이트2
ahaljh edited this page Oct 31, 2016
·
1 revision
-
객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴
-
예) 데이터가 변경되면 자동으로 그래프가 변경
-
옵저버(Observer)로 불리는 하나 이상의 객체를 관찰 대상이 되는 객체(Subject)에 등록
-
각각의 옵저버들은 관찰 대상인 객체가 발생시키는 이벤트를 받아 처리
// src/main/scala/progscala2/traits/observer/Observer.scala
package progscala2.traits.observer
trait Observer[-State] {
def receiveUpdate(state: State): Unit
}
trait Subject[State] {
private var observers: List[Observer[State]] = Nil
def addObserver(observer:Observer[State]): Unit =
observers ::= observer
def notifyObservers(state: State): Unit =
observers foreach (_.receiveUpdate(state))
}