Skip to content

9.2 믹스인으로서의 트레이트2

ahaljh edited this page Oct 31, 2016 · 1 revision

믹스인으로서의 트레이트2

관찰자 패턴

  • 객체의 상태 변화를 관찰하는 관찰자들, 즉 옵저버들의 목록을 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 객체가 직접 목록의 각 옵저버에게 통지하도록 하는 디자인 패턴

  • 예) 데이터가 변경되면 자동으로 그래프가 변경

  • 옵저버(Observer)로 불리는 하나 이상의 객체를 관찰 대상이 되는 객체(Subject)에 등록

  • 각각의 옵저버들은 관찰 대상인 객체가 발생시키는 이벤트를 받아 처리

Observer Pattern

// 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))
}
Clone this wiki locally