Я разрабатываю приложение WPF с использованием шаблона MVVM. Я использую библиотеку MVVM Light и пытаюсь использовать инжектор зависимостей (я рассматриваю Ninject и Unity).
Я прочитал много статей в блогах, и я весьма озадачен «правильным» способом заставить мои классы общаться друг с другом. В частности, я не знаю, когда использовать инъекцию зависимости, а когда полагаться на шаблон посредника.
Давайте рассмотрим пример. У меня есть ViewModel, давайте назовем его DataViewModel и класс Data, который предоставляет какие-то данные.
Как лучше общаться между ними:
A. Внедрить зависимость от DataViewModel с интерфейсом IData? Таким образом, Данные не должны будут полагаться на Messenger, но должны будут предоставить событие, если Данные изменятся, и ViewModel придется подписаться на него.
B. Положитесь на шаблон посредника (реализованный в MVVM Light as Messenger) и отправляйте сообщения между Model и ViewModel? Таким образом, совсем не обязательно будет использовать Dependency Injection, потому что все общение будет основано на сообщениях.
Кроме того, должны ли мои ViewModel вводить зависимости от других ViewModels, или было бы лучше просто положиться на Messenger? Если первое, будет ли необходимо определять отдельный интерфейс для каждой ViewModel? Я думаю, что определение интерфейса для каждой виртуальной машины будет дополнительной работой, но, возможно, оно того стоит.