概要
- 良く実装したくなるセマンティクスに対する、明快なオブジェクト指向的設計
- 例えばオブザーバパターンであれば、「ゲームの描画機能は、戦闘機の位置変化を監視していたいなー」→「状態変化を監視して変化時に処理」みたいな感じ
目次
参考
http://qiita.com/narumi888/items/e1fad8aa3000f0726601 http://qiita.com/narumi888/items/f656678c78d50c40bc1c http://qiita.com/narumi888/items/b205e59e7fc81695f380 http://qiita.com/narumi888/items/699a51b3df0e8a418f60 http://qiita.com/narumi888/items/312ce1894c24cd3e0d6b
オブザーバパターン
- 参考, コード
- 観察対象のクラスの状態が変化した時に、観察者クラスに通知
- セマンティクスは「状態変化を監視して変化時に処理」,「状態変化を誰かに知らせたい」,「複数のコールバック」
- Observerパターンは、Publish-Subscribeパターンとも呼ばれる
- 登場人物まとめ
- 観察者抽象クラス (Update)、観察者
- 観察対象抽象クラス (AddObserver, Notify=全観察者をUpdate)、観察対象
- 理解のコツ
- 観察対象変更→観察対象「この変更は観察してほしいぜ」→観察対象「全員俺を見ろー(Notifyで観察者全員に自分を投げつける)」→観察者たち.Update(観察対象)「観察対象が投げつけられてきたから何か処理してやるか」
- 観察対象Aに対しては観察者A,Bに対してはBが必要,つまりセット.しかし,観察対象Aが,全クラスが共通のクラスSuperだったら…SuperObserverを作ることで全クラスが観察対象になりうる!
- 命名
- 観察対象を"class Hoge", あるいは"class HogePublisher"
- 観察者を"HogeObserver", あるいは"class HogeSubscriber"