[[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"

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS