Я будую додаток WPF за допомогою шаблону MVVM. Зараз мої viewmodels викликають сервісний шар для отримання моделей (як це не стосується viewmodel) та перетворення їх у viewmodels. Я використовую інжектор конструктора, щоб передати необхідну послугу в перегляд.
Це легко перевіряється і добре працює для моделей перегляду з невеликими залежностями, але як тільки я намагаюся створити viewModels для складних моделей, у мене є конструктор, що в нього вводиться багато служб (один для отримання кожної залежності та список усіх доступних значень наприклад, для прив’язки до itemsSource). Мені цікаво, як обробляти кілька подібних служб, і все ще є перегляд моделей, який я можу легко виконати.
Я думаю про кілька рішень:
Створення сервісу одиночного типу (IServices), що містить усі доступні сервіси як інтерфейси. Приклад: Services.Current.XXXService.Retrieve (), Services.Current.YYYService.Retrieve (). Таким чином, у мене немає величезного конструктора з тоннами параметрів послуг.
Створення фасаду для служб, які використовує viewModel, і передача цього об'єкта в ctor моєї viewmodel. Але тоді мені доведеться створити фасад для кожного з моїх складних моделей перегляду, і це може бути трохи більше ...
Як ви вважаєте, що це "правильний" спосіб втілення подібного роду архітектури?
new
для створення інших моделей перегляду, але придумати щось таке просто, як додаток MDI, коли натискання кнопки або меню «новий документ» додасть нову вкладку або відкриє нове вікно. Оболонка / провідник повинні вміти створювати нові екземпляри чогось , навіть якщо це приховано за одним або кількома шарами непрямості.