Estoy creando una aplicación WPF usando el patrón MVVM. En este momento, mis modelos de vista llama a la capa de servicio para recuperar modelos (por qué no es relevante para el modelo de vista) y convertirlos en modelos de vista. Estoy usando la inyección del constructor para pasar el servicio requerido al modelo de vista.
Es fácilmente comprobable y funciona bien para modelos de vista con pocas dependencias, pero tan pronto como intento crear modelos de vista para modelos complejos, tengo un constructor con MUCHOS servicios inyectados (uno para recuperar cada dependencia y una lista de todos los valores disponibles para enlazar a un itemSource por ejemplo). Me pregunto cómo manejar múltiples servicios como ese y aún tener un modelo de vista que pueda probar fácilmente en la unidad.
Estoy pensando en algunas soluciones:
Crear un singleton de servicios (IServices) que contenga todos los servicios disponibles como interfaces. Ejemplo: Services.Current.XXXService.Retrieve (), Services.Current.YYYService.Retrieve (). De esa manera, no tengo un gran constructor con una tonelada de parámetros de servicios en ellos.
Creando una fachada para los servicios utilizados por viewModel y pasando este objeto en el ctor de mi viewmodel. Pero entonces, tendré que crear una fachada para cada uno de mis modelos de vista complejos, y podría ser un poco demasiado ...
¿Cuál crees que es la forma "correcta" de implementar este tipo de arquitectura?
new
para crear otros modelos de vista, pero piense en algo tan simple como una aplicación MDI en la que al hacer clic en un botón o menú de "nuevo documento" se agregará una nueva pestaña o se abrirá una nueva ventana. El shell / conductor debe poder crear nuevas instancias de algo , incluso si está oculto detrás de una o unas pocas capas de indirección.