Saya sedang membangun aplikasi WPF menggunakan pola MVVM. Saat ini, model tampilan saya memanggil lapisan layanan untuk mengambil model (bagaimana tidak relevan dengan model tampilan) dan mengubahnya menjadi model tampilan. Saya menggunakan injeksi konstruktor untuk melewati layanan yang diperlukan untuk viewmodel.
Ini mudah diuji dan berfungsi dengan baik untuk model tampilan dengan sedikit dependensi, tetapi segera setelah saya mencoba membuat model viewModels untuk model yang kompleks, saya memiliki konstruktor dengan BANYAK layanan yang disuntikkan di dalamnya (satu untuk mengambil setiap dependensi dan daftar semua nilai yang tersedia) untuk mengikat ke itemSumber misalnya). Saya ingin tahu bagaimana menangani beberapa layanan seperti itu dan masih memiliki model tampilan yang dapat saya uji dengan mudah.
Saya sedang memikirkan beberapa solusi:
Membuat layanan singleton (IServices) yang berisi semua layanan yang tersedia sebagai antarmuka. Contoh: Services.Current.XXXService.Retrieve (), Services.Current.YYYService.Retrieve (). Dengan begitu, saya tidak memiliki konstruktor besar dengan banyak parameter layanan di dalamnya.
Membuat fasad untuk layanan yang digunakan oleh viewModel dan meneruskan objek ini di ctor viewmodel saya. Tapi kemudian, saya harus membuat fasad untuk masing-masing model viewe kompleks saya, dan mungkin agak banyak ...
Menurut Anda apa cara "benar" untuk mengimplementasikan arsitektur semacam ini?
new
untuk membuat model tampilan lain, tetapi pikirkan sesuatu yang sederhana seperti aplikasi MDI di mana mengklik tombol atau menu "dokumen baru" akan menambah tab baru atau membuka jendela baru. Shell / konduktor harus dapat membuat contoh baru dari sesuatu , bahkan jika itu tersembunyi di balik satu atau beberapa lapisan tipuan.