Я использую MVVM с Призмой и Silverlight. У меня есть несколько разных взглядов на одну модель. Поскольку я пишу больше представлений, их ViewModels, кажется, дублируют много общего кода, связанного с обработкой этой одной модели. Вместо того, чтобы повторять один и тот же общий код на всех виртуальных машинах, я испытываю желание отодвинуть его обратно в модель (что, вероятно, слишком смешало бы проблемы). Или, может быть, в какой-то общий базовый класс ViewModel? Или, может быть, моей виртуальной машине нужен второй уровень «общей виртуальной машины» между ними и моделью? Этот единый общий экземпляр, 2-й уровень-ВМ, консолидирует поведение и состояние, совместно используемые несколькими обычными ВМ.
Есть ли какие-либо комментарии по поводу этих проблем и возможных подходов?
Спасибо за комментарии, ребята. Возможно, мне следовало бы рассказать вам больше о конкретном «разделяемом» коде виртуальной машины.
Я вижу размещение некоторого будущего кода в базовом классе виртуальной машины, но определенный «общий» код, на который я смотрю, кажется, принадлежит INotifyPropertyChanged, реализованному моделью сам. Это частично основано на этом другом потоке .
Я не думаю, что это нарушает SoC, потому что модель по своей природе динамическая. Некоторые из его свойств действительны только в определенное время. Эта динамическая природа модели - это не просто что-то важное для пользовательского интерфейса. Надлежащим юнит-тестом также будет уделено внимание. Следовательно, эта модель, кажется, нуждается в INotifyPropertyChanged.
Есть какие-нибудь комментарии по этому поводу?