Observer

observer.png

概要

オブジェクト間の1対多の依存関係を定義し、
あるオブジェクトの状態が変化すると、それに依存しているすべてのオブジェクトが
自動的に通知され更新されるようにします

オブジェクトが気にかけていることが起きた時に、オブジェクトがそのことをわかるようにする
新聞や雑誌の定期購読のようなもの[Bibliography item headfirst not found.]
Observerパターンでは、
発行者(publisher)をサブジェクトと呼び、
購読者(subscriber)をオブザーバと呼ぶ。
Observerパターンは、オブジェクト間の1対多の依存関係を定義し、
あるオブジェクトの状態が変化すると、
それに依存しているすべてのオブジェクトが自動的に通知され
更新されるようにします。

関数

update()

なぜこのパターンを使用するか?

このパターンの使いどころ

MVCだと
ビュー オブザーバ
モデル サブジェクト

である。[Bibliography item kondo not found.]
私のアプリの場合、
コントロールパネルのボタン群がサブジェクトで、(ステートを変える)
レンダリングウィンドウがオブザーバかな。。。?(毎フレーム情報が変化してないか監視する)

クラス図


互いに互いの参照は持っている。
ただし、Subjectは「私を呼び出さないで下さい、こちらから呼び出します」というお高くとまった状態にある。
つまりハリウッド原則の状態になっているのだ。
もう一つのポイントは1対多の関係にあるということ

このパターンに必要な材料

Javaには組み込みでObserverパターンを実装するための材料がある
材料名 意味 戻り値 関数名 引数 関数の説明 \n java.lang.Observer オブザーバ void update (Observable o, Object arg) 被監視オブジェクトに変更があると、このメソッドが呼び出されます。
java.lang.Observable Subject void addObserver (Observer o) オブジェクトのオブザーバセットにオブザーバを追加します。
protected void clearChanged () オブジェクトがもはや変更された状態ではないこと、すなわち、最新の変更がすべてオブザーバに通知されたことを示します。 \n int countObservers () Observable オブジェクトのオブザーバの数を返します。 \n void deleteObserver (Observer o) オブジェクトのオブザーバセットからオブザーバを削除します。
void deleteObservers () オブザーバリストを消去します。 \n boolean hasChanged () オブジェクトが変更されたかどうかを判定します。 \n void notifyObservers () オブジェクトが、hasChanged メソッドに示されるように変更されていた場合、そのすべてのオブザーバにそのことを通知し、次に clearChanged メソッドを呼び出して、このオブジェクトがもはや変更された状態でないことを示します。 \n void notifyObservers (Object arg) オブジェクトが、hasChanged メソッドに示されるように変更されていた場合、そのすべてのオブザーバにそのことを通知し、次に clearChanged メソッドを呼び出して、このオブジェクトがもはや変更された状態でないことを示します。 \n protected void setChanged () Observable オブジェクトを変更されたものとしてマーキングします。 \n++ 各材料の役割・関係\n サブジェクト(偉い) オブザーバ(従属者) \n データを管理する サブジェクトを購読(subscribe)する。 \n サブジェクトのデータが変化すると、オブザーバに通知する。 サブジェクトのデータが変化した際に更新情報を受信する。 \n サブジェクトはそのデータの唯一の所有者である。 状態を持っていないのに、その状態を使用する

biblabel: 'kondo '
bibliography: 'http://www.amazon.co.jp/%E5%9B%B3%E8%A7%A3%E5%85%A5%E9%96%80-%E3%82%88%E3%81%8F%E3%82%8F%E3%81%8B%E3%82%8B%E6%9C%80%E6%96%B0%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%81%AE%E5%9F%BA%E6%9C%AC%E3%81%A8%E4%BB%95%E7%B5%84%E3%81%BF%E2%80%95%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7%E3%82%AF%E3%83%88%E6%8C%87%E5%90%91%E3%82%B7%E3%82%B9%E3%83%86%E3%83%A0%E9%96%8B%E7%99%BA%E5%85%A5%E9%96%80-How%E2%80%90nual%E5%9B%B3%E8%A7%A3%E5%85%A5%E9%96%80%E2%80%95Visual-guide-book/dp/4798010375'
bibname: '図解入門 よくわかる最新オブジェクト指向の基本と仕組み―オブジェクト指向システム開発入門 (How‐nual図解入門'


game-design-pattern hollywood-principle loose-coupling mvc

サポートサイト Wikidot.com game-design-patternhollywood-principleloose-couplingmvc