Observerパターンって、そうなんだぁ。。。
Observerパターンについて
Observerパターンは振る舞いに関するデザインパターンの1つです。
そして、Observerパターンを導入することで、依存関係のあるオブジェクトをそれぞれ異なるオブジェクトとしてカプセル化することができます。
実際にObserverパターンを組み込む場合、Observerパターンではsubjectとobserverの2種類のオブジェクトが登場します。
そして、それぞれのオブジェクトが以下の役割を持っています。
- subject
subjectは自分に依存するすべてのobserverを把握しています。
そして、任意のobserverから変更の通知を受けた場合、自分に依存するすべてのobserverへ更新の依頼を行います。
- observer
observerはイベントを発生させることで、subjectに対してobserver自身の状態を通知します。
そして、subjectの状態を受け取ることで、observer自身の状態をsubjectの状態と同期させます。
Observerパターンの更新プロトコル
- PUSHモデル
Observerの要求有無とは無関係に更新情報をObserverに送る方法
- PULLモデル
Observerが必要な時に更新情報をSubjectから受け取る方法
MVCで使用されているデザインパターンの1つ
ObserverパターンはMVCアーキテクチャを構成するためのデザインパターンの1つとして使用されています。
なお、Observerパターンの構成要素とMVCの対応箇所は、以下のとおりです。
- Observer:View
- Subject:Model
このため、MVCアーキテクチャでは、Viewで発生したイベントがModelに伝わり、Modelはイベントを受け取ることで自信を更新します。
そして、最新の状態になったModelは、自分が関連するViewを更新するような振る舞いをします。
実際には、MVCアーキテクチャはViewで発生したイベントをControlerで受け取り、ControlerがModelを更新します。
そして、Modelの更新をViewに通知することでViewが最新の状態になるようです。
MVVMの場合
MVVMでは、ViewModelとModelがObserver的なつながりをしているようです。
これは、Viewが画面のレイアウトを担当しており、イベントの処理や画面に表示するデータはViewModelが担当しているためです。
そして、ViewはViewModelを監視することで、ViewModelにある表示データの変更をViewに反映しています。
そのため、ViewModelがModelを更新し、そして、Modelの更新をViewModelで受けることになります。
そして、ViewModelがModelの更新を受け付けることをViewが感知することでViewが更新されるようです。
デザインパターンやアーキテクチャをしっかり学びたいなら
- 作者: エリックガンマ,ラルフジョンソン,リチャードヘルム,ジョンブリシディース,Erich Gamma,Ralph Johnson,Richard Helm,John Vlissides,本位田真一,吉田和樹
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 1999/10
- メディア: 単行本
- 購入: 21人 クリック: 711回
- この商品を含むブログ (202件) を見る
- 作者: 結城浩
- 出版社/メーカー: ソフトバンククリエイティブ
- 発売日: 2004/06/19
- メディア: 大型本
- 購入: 51人 クリック: 762回
- この商品を含むブログ (397件) を見る
エリック・エヴァンスのドメイン駆動設計 (IT Architects’Archive ソフトウェア開発の実践)
- 作者: エリック・エヴァンス,今関剛,和智右桂,牧野祐子
- 出版社/メーカー: 翔泳社
- 発売日: 2011/04/09
- メディア: 大型本
- 購入: 19人 クリック: 1,360回
- この商品を含むブログ (131件) を見る