u16suzuの blog

u16suzu のブログです。

RubyでObserverデザインパターン

なんか、FFの調子が悪い。。
今日は、RubyのObserverデザインパターンを試してみました。エラーログ出力に使えそう。

require 'observer'

#被観察者
class AObservable
  include Observable
end

#観察者
class AObserver
  def update(str)
    p str
  end
end

#オブジェクト作成
obj = AObservable.new
observer = AObserver.new

#観察者に被観察者を登録
obj.add_observer(observer)

#被観察者のフラグをかえる
obj.changed

#notify_observersで観察者のupdateメソッド実行。
#notify_observersの引数がupdateに渡される。
obj.notify_observers("hello !") #=> "hello !"