7

次のような WPF アプリケーションがあります。

ここに画像の説明を入力

ビューモデルはモデルをラップし、INotifyChanged を介してビューに関連する属性を公開します。ビューは、ビューによってトリガーされる特定の動作を処理するいくつかの ICommand オブジェクトにもバインドされます。モデルをデータベースに保存することを唯一の目的とする外部 ICommand があります。

私が読んだことはすべて、ビューもビューモデルもリポジトリへの参照を持つべきではないことを示しています。これがビューモデルの外にあるコマンド 3 の理由です。

私の質問は 2 つあります。第一に、これは合理的なアーキテクチャであるか、第二に、モデル インスタンスをコマンド 3 に渡してリポジトリに配置できるようにするための適切な方法は何ですか?

4

2 に答える 2

10

個人的には、ViewModel にリポジトリへの参照を持たせることに問題はないと思います。これを回避しようとすると、不必要な複雑さが生じます。

MVVM では、ViewModel は通常、モデルの上にある「接着剤」レイヤーであり、リポジトリはモデルの一部です (ドメイン固有のデータ/ロジックの一部です)。MVVM に関する私のブログ シリーズは、これについて私が個人的にどのように考えているかの良いイメージを示しています。

MVVM ダイアグラム

コマンド 3 を VM に入れることで、VM がリポジトリと直接連携できるようにすることで、VM を分離しようとするよりもクリーンになる可能性があります。

于 2012-12-13T20:05:43.680 に答える