Re: MVVM: Можно ли размещать логику во ViewModel?
От: evgenich  
Дата: 08.08.12 20:41
Оценка: 1 (1)
Здравствуйте, igor-booch, Вы писали:
IB>Я считаю ViewModel должна только вызывать логику классов модели, логику вспомогательных классов и сервисом.
IB>По сути ViewModel это код связывающий View и Model и никакой дополнительной логики во ViewModel быть не должно.

В общем-то ViewModel по-моему — это не медиатор, а инкапсулятор логики представления.
Не надо забывать также, что одно из важных предназначений ViewModel (и младших братьев контроллеров/презентеров в MVC/MVP)
— возможность покрытия этой логики тестами. С этой точки зрения presentation logic для конкретного View как раз должна размещаться во ViewModel, а не быть размазанной по сервисам.
Модель на мой взгляд лучше вообще сделать максимально свободной от логики. Хотя в MVC и практикуется подход, когда presentation logic сосредоточена в модели, а контроллер — чистый посредник.

Обычно я стараюсь придерживаться следующей архитектуры — во ViewModel помещается логика представления,
на отдельном BL-слое размещается бизнес-логика (как правило описывается интерфейсными контрактами, которые легко подменять mockup-объектами для целей тестирования). Какая-то специфическая логика доступа к данным
может быть в модели, но от ViewModel эта логика опять же скрывается для уменьшения связности, т.е. ViewModel работает с моделью как с черным ящиком.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.