MVVM desenini kullanarak bir WPF uygulaması inşa ediyorum. Şu anda, görünüm modellerim modelleri (görünüm modeliyle nasıl ilgili değil) almak ve bunları görünüm modellerine dönüştürmek için hizmet katmanını çağırıyor. Viewmodel için gerekli hizmeti geçmek için yapıcı enjeksiyon kullanıyorum.
Kolayca test edilebilir ve birkaç bağımlılığa sahip görünüm modelleri için iyi çalışır, ancak karmaşık modeller için viewModels oluşturmaya çalıştığımda, içine enjekte edilmiş çok sayıda hizmet içeren bir yapıcıya sahibim (her bağımlılıkları ve mevcut tüm değerlerin listesini almak için bir tane) örneğin bir itemSource kaynağına bağlamak için). Böyle birden çok hizmeti nasıl ele alacağımı merak ediyorum ve yine de kolayca test edebileceğim bir görünüm modeline sahibim.
Birkaç çözüm düşünüyorum:
Arabirim olarak kullanılabilir tüm hizmetleri içeren bir hizmet singletonu (IServices) oluşturma. Örnek: Services.Current.XXXService.Retrieve (), Services.Current.YYYService.Retrieve (). Bu şekilde, içinde tonlarca hizmet parametresi olan büyük bir kurucum yok.
ViewModel tarafından kullanılan hizmetler için bir cephe oluşturma ve bu nesneyi viewmodelimin kasasına geçirme. Ama sonra, her karmaşık görünüm modelim için bir cephe oluşturmam gerekecek ve biraz fazla olabilir ...
Sizce bu tür mimariyi uygulamanın "doğru" yolu nedir?
new
diğer görünüm modellerini oluşturmak için kullanmaması gerektiğini söyleyebilirim , ancak "yeni belge" düğmesine veya menüye tıklamanın yeni bir sekme ekleyeceği veya yeni bir pencere açacağı bir MDI uygulaması kadar basit bir şey düşünün. Kabuk / iletken gerekir yeni örneklerini oluşturmak mümkün bir şey birine veya bir birkaç dolaylama katmanları arkasında gizli olsa bile,.