現在、 WPF ⁺ Prism ⁺ ReactiveProperty で MVVM を勉強中です。
元々 Livet を使ってでWPFアプリを作ったことはあるのですが、現在の主流?が Prism ⁺ ReactiveProperty ということで、勉強しなおしているところです。
そこで気になった点がありますので、質問させていただきます。
Model は最低2レイヤー構成となるのか?
Prism ⁺ ReactiveProperty で Model 層を実装すると、Model 層側で BindableBase
を継承したクラスを用意し、それらにゲッターセッタープロパティを持たせることになると思います。
そこで違和感があったのですが、そもそも BindableBase
という関心ごとは MVVM を実現するための機能であり、本来の業務ロジックとは異なります。また、クラスにゲッターセッタープロパティを持たせるとカプセル化を破壊することにつながる恐れがあると考えます。(一般的に、業務ロジックを扱うドメイン層では、ゲッターはまだしもセッターは極力使うべきではないと考えています)
となると、BindableBase
を継承したクラスは、対 ViewModel 向けの関心ごとを保持していることになるので、もはや MVVM の本来の目的である「ビューからモデル層を独立させる」ということが達成できていないのではと違和感を覚えました。
それを解決するためには、モデル層を以下の最低2レイヤー構成にするほうがいいのか?と思ってきました。
- 「対 ViewModel 向けの
BindableBase
を継承したゲッターセッタープロパティを保持するクラス」を扱うレイヤー(つまりViewModelを向けにドメインオブジェクトを加工するレイヤー) - 純粋な業務ロジックや、いわゆるインフラ層(ここはプロジェクトや問題の複雑度により任意数のレイヤーとなる)
んなわけないですよね?
自分で書いていてなんですが、ググってもそんな記事見つからないので、上記の疑問は根本から間違っているのかなと思います。
しかし、Model層で「BindableBase
を継承したゲッターセッタープロパティを保持するクラス」を他のドメインロジックと同じレベルで扱うことにかなりの違和感があるのは事実です。
ここら辺、 WPF ⁺ Prism ⁺ ReactiveProperty で開発経験のある諸先輩方はどのように考えていらっしゃるのでしょうか。
私の間違っている部分をご指摘いただけると幸いです。
感覚的な質問になってしまいますが、ご教授いただければ助かります。
宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー