質問: **質問内容** -------- MVVMではViewModelとModelは一対でなければなりませんか? ViewModelから複数のModelを参照することはルール違反でしょうか? 詳細 -- MVVMの学習を行っています。 ネットにあるサンプルの場合、View - ViewModel - Model が一対となっている説明が散見されます。 ファイル構成でいうと、 | View | ViewModel | Model | | --- | --- | --- | | MainView.xaml | MainViewModel.cs | MainModel.cs | このような感じです。 私もはじめこの構成でもってプログラミングを開始したのですが、今現在MainModel.csが肥大化し続けています。 機能レベルでクラスの分割は行っておりますが、それらオブジェクトのインスタンスをMainModel.csが抱えてしまっているため、機能追加の度にMainModel.csが大きくなります。 (要するにMainModelが全ての機能をラップした神オブジェクトになってしまっている感じです。。。) ``` /* [現行] View --- MainViewModel --- MainModel --- 機能A └- 機能B └- 機能C */ ``` この肥大化をやめるため、以下のような構成を考えているのですがこれはルール違反ですか? ``` /* [変更案] View --- ViewModel --- 機能A └- 機能B └- 機能C */ ``` それとModelと呼ばれるクラスはクラス名に必ず"Model"をつけないといけないものなのでしょうか? 恐れ入りますがご意見頂戴できれば幸いです。よろしくお願いします。 開発環境 ---- OS: Windows 10 (64bit) 開発言語: C#(WPF) .Net: 4.6.1 IDE: VS 2017 ※ 開発中のアプリケーションは、画面が1枚(細かいダイアログは除く)のアプリケーションです。 以上
回答: > > View - ViewModel - Model が一対となっている説明が散見されます > > > 説明しやすくするためにそうしているだけです。 1対10対100でも100対10対1でもかまいません。 と言うか、1対1対1になる事はほぼありません。 我流で作り始めるより、まずはテンプレートなりサンプルなり開いてみることをお勧めします。 「定石は学ぶよりまねろ」ですよ。 Prism Template Packがお勧めです。