いたずらっ子のらくがき

色々リニューアル。

observer パターン

2007-11-22 01:00:00 | デザインパターン
observer パターン。JDK ではよく使われているパターンらしい。
ばっちり覚えよー。

Java では Java.util の中に Observer インターフェースと
Observable クラスがある。これらを使って Observer パターンを
実装することができる。けど、まずは Observer パターンの
基本的な考え方。まとめてみた。

Observer パターンは、オブジェクト間を 一対多の依存関係で構成する。
一の方はサブジェクト(Subject)と呼び、多の方はオブザーバ(Observer)と呼ぶ。
Observer パターンではこの上にモデルを構築してる。そのモデルは以下。
  • あるオブジェクトがオブザーバになりたいなら、その旨をサブジェクトに 伝える。サブジェクトはそのオブジェクトをオブザーバとして登録
  • あるオブジェクトがオブザーバであることをやめたいなら、その旨をサブジェクトに 伝える。サブジェクトはそのオブジェクトの登録を削除
  • サブジェクトの状態が変化したら、サブジェクトは登録されているオブザーバに通知
  • オブザーバはサブジェクトから通知を受けたら通知内容に応じて更新

オブザーバを(時にはサブジェクトを)簡単に追加したり削除したりするには、
インターフェースを作る。Strategy パターンにもでてきたインターフェース。
汎化で考えるなら、オブザーバ(サブジェクト)になりうるものを汎化したものを作るってことだけど
…そんな無理に考える必要もないな。インターフェースでいいや。

これが Observer パターン。覚えられない…そんな時は新聞の定期購読の仕組みを
覚える。Observer パターンの例でよく使われている。イメージするには最適だと思う。