デザインパターン-Observer

Observerパターンとは

Observerパターンとは、観察者(Observer)となるオブジェクトが、観察対象となるオブジェクトの状態変化に応じた処理を行うパターンです。

観察対象オブジェクトは自身の状態が変化した場合、観察者オブジェクトに通知します。

「Observer」とは「観察者」という意味です。


構成要素

  • Subject(観察対象者)
    • 観察対象となるオブジェクトのインタフェースを定義します。
  • ConcreteSubject(具体的な観察対象者)
    • 観察者を保持するメソッドや観察者への状態変化通知メソッドなどを実装します。
  • Observer(観察者)
    • 「Subject」の状態変化監視メソッドのインタフェースを定義します。
  • ConcreteObserver(具体的な観察者)
    • 「Subject」の状態変化に対する処理を実装します。
  • Client(利用者)

rubyによるObserverパターンの実装

rubyでは、ObservableモジュールをincludeすることでObserverパターンを実現できます。


#!/usr/bin/env ruby

require 'observer'

#被観察者
class ConcreteSubject
  include Observable
end

#観察者
class ConcreteObserver
  def update(arg)
    puts 'update message: ' + arg
  end
end

cs = ConcreteSubject.new
co = ConcreteObserver.new
cs.add_observer(co)

# 更新フラグを立てる
cs.changed
# オブザーバに通知
cs.notify_observers('Changed!')


関連ページ