MVVMパターンを理解しようとしていますが、明確ではない問題があります。私のXamarin Formsアプリケーションにはいくつかのビューがあります(これは非常に明白です)。誰もが別のModelViewクラスにバインドされている必要がありますか? MVが1つだけあればいいですか?MVVMパターンにはViewModelクラスが1つしかありませんか?
3
A
答えて
1
私はいつも「各ビューは独自のVMを持っている」と考えました。モデルは包括的なデザインのサブセットです。
私は苦しい経験から言っています:彼らがサポートしているビュー/ UIだけに基づいてモデルを孤立して設計しないでください。包括的なモデルのバックエンドがなければ、すべての作品を一貫した完全なビジネスモデルに統合するのは難しいでしょう。貧血クラス、冗長ビット、不完全および間違ったバリデーション、同じプロパティ - 異なる名前、既存のコードとの非互換性、ハッキーグルーコードのゴブ、お互いのコードを破るプログラマー、再利用性なし、既存のクラスの再利用なし。私たちのために、3ヶ月のテストフェイル・フィックス・チルト・アラウンドの恥ずかしさの中で、すべてが頭に浮かんだ。
1
はいとノー
はい - >基本的な考え方は、あなたのViewModel
1つのビューだけを使用しなければならないということです。 ViewModel
を使用して領域を設定した場合、または異なる場所に表示されるたびにViewModel
が「再利用」されます。
いいえ - >ビューモデルで複数のモデルを使用できます。ビューモデルの目的は、ビジネス/データ層(すなわち、モデル)を抽象化することである。 しかし、複数のモデルを使用すると、通常、ビューが大きすぎることが示されます。ユーザーコントロール(独自のビューモデルを持つ)に分割したい場合があります。
参考文献:
関連する問題
- 1. ViewModel + Data Bindingのベストプラクティスとパターン。 ViewModelのObservableFieldは問題ありませんか?
- 2. roc_auc_score - y_trueには1つのクラスしかありません
- 3. sklearn auc ValueError:y_trueに1つのクラスしかありません
- 4. MVVMパターン、ViewModel DataContext質問
- 5. シングルスレッドプロセスにはスレッドが1つしかありませんか?
- 6. MVVMパターン使用時にViewModelにアクセス
- 7. array_uniqueは1つのフィールドにしかありませんか?
- 8. KNNCATエラー「一部のクラスには1つのメンバーしかありません」
- 9. Android上でMVVMを使用する場合、各アクティビティにViewModelが1つ(唯一)ありますか?
- 10. りんごには配布証明書が1つしかありません
- 11. Viewmodelプロパティが見つかりませんでした
- 12. jqueryデータテーブルには1つのブレークポイントしかありません
- 13. ScrollViewは直接の子を1人しかホストできませんが、1つしかありません
- 14. kibanaにパターンがありません
- 15. Django1.11 - URLconfにパターンがありません
- 16. C#オーバーロードの方法がありません 'ToString'は引数が1つしかありません -
- 17. リストビューのアイテムが1つしかありません
- 18. Androidスタジオ:android.jarにいくつかのクラスがありません
- 19. 私のDjangoビューには引数が1つしかなく、2つしか指定されていませんが、1つしかありません。
- 20. MVVMのパターンとViewModelからModelへのアクセス
- 21. センターでは1つの円しか必要ありません
- 22. DropboxAPI、クラスが見つかりません。
- 23. クラスが見つかりません
- 24. Doctrineクラスが見つかりません
- 25. PHPクラスが見つかりません
- 26. クラス 'Facebook'が見つかりません
- 27. DataContractJsonSerializerクラスが見つかりません
- 28. クラス 'DateTimeImmutable'が見つかりません
- 29. mime_mailクラスが見つかりません
- 30. クラス 'AMQPConnection'が見つかりません
それが依存しています。通常、各ビューには独自のVMがありますが、2つの同様のビューでVMを共有できます。すべてのビューで同じVMを使用するのは珍しいことですが、理にかなった単純なアプリの場合はそうです。 – Jason