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