C++
概要 †
- 良く実装したくなるセマンティクスに対する、明快なオブジェクト指向的設計
- 例えばオブザーバパターンであれば、「ゲームの描画機能は、戦闘機の位置変化を監視していたいなー」→「状態変化を監視して変化時に処理」みたいな感じ
目次 †
参考 †
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?"