Repository Pattern

2018/08/27 WPF::Prism
Repository:倉庫
これは説明不要なくらいよく出てくるパターン。
アプリケーションに必要なデータの取得を実際の取得方法(DB、JSON、XML等々)と分離する。
データの保存方法が変わった時のためというよりも、単体テスト時のダミーデータを返すテスト用リポジトリと簡単に切り替えるため。

Registry Pattern

2018/08/27 WPF::Prism
Registry(登記所、登録所)
こちらの説明を読むとMartin Fowlerの説明ほぼそのまま。
オブジェクトを一箇所(よく知られた場所)に登録しておき、他のオブジェクトから探しやすい、利用しやすいようにしておく。

Prismにおける利用

view typesをregionに紐づけるために利用。
IRegionViewRegistryインターフェイスとRegionViewRegistryクラスでレジストリを定義。

Model-View-ViewModel Pattern

2017/12/02 WPF::Prism
UIのデザインパターンの一つ。
他にはMVC(Model-View-Controller)、MVP(Model-View-Presenter)など。
ロジックからViewを切り離すことによって、ロジックのテストをしやすくする。

PrismにおけるMVVM

PrismはどのUIパターンとも共存できるよう設計されているけれど、WPFの特性を考えるとMVVMが一番お勧め。

MVVM Code Sample using the Prism Library 5.0 for WPF
上記の下記ファイルを参照
QuestionnaireView.xamlViewUI
QuestionnaireView.xaml.csViewQuestionnaireViewのpartial class。空。ここにロジックを書くとViewが絡むのでテストしづらい。XAMLだけでは表現しきれない複雑なアニメーションのロジック等を書く場合はここ。
QuestionnaireViewModel.csViewModelViewに必要なデータや状態を保持。BindableBaseを継承
Questionnaire.csModelデータの型

Observer Pattern

2017/11/08 WPF::Prism
GoF本にもある古典的なパターン。
あるオブジェクト(サブジェクト)が状態を変えた時、それに依存する全てのオブジェクト(オブザーバー)に自動的に状態の変更が通知され、通知を受け取った側が更新されるようにオブジェクト間に1対Nの依存関係を構築する。
通知する側と通知を受け取る側の結びつきをゆるくするためのパターン。
observer010.png

すみません、GoF本の改変改悪ですm(_ _)m。

Prismにおける利用

InteractionRequestはオブザーバーパターンの一種
InteractionRequestのソースはこちら
InteractionRequestの利用例はこちら
observer020.png

こんな感じでしょうか。自信ないです…。

Inversion of Control Pattern

2017/10/23 WPF::Prism
制御の反転(MSDN)
制御の反転(Wikipedia)
Inversion of Control(Martin Fowler)上のWikiの説明のソースはここ。

違いを絵にしてみた

従来の手続き型プログラミング

手続き型プログラミング

PGはプログラム

制御の反転

上と矢印の向きが変わっているので制御の反転(呼ぶ方と呼ばれる方が逆転している)。
制御の反転

M AのMはモジュールのM

実装方法

Prismにおける利用

依存性の注入に関してはこちら
テンプレートメソッドの例としてはUnityServiceLocatorAdapter(?)。
OK キャンセル 確認 その他