В чем принципиальный выигрыш при использовании MVVM вместо MVC

сейчас изучаю Swift и застопорился на изучении архитектур. Для начала я начал изучать архитектуру MVC, сразу все делаю без сторибордов чисто в коде, с изучение проблем не возникло, все более или менее понятно: View - это некое UIView(), в котором у нас создаются UI элементы и настраиваются constraints, имеет несколько функций, которые вызываются из контроллера, для изменения тех или иных элементов, действия пользователя передает в контроллер для обработки и изменений интерфейса. Как и на многих картинках, это легко представить, выглядит примерно вот так:

MVC example

MVC славится как Massive View Controller потому что в ViewController очень много кода, и у него много ответственности, поэтому MVVM в этом плане лучше.

Что мы имеем при MVVM: Наш контроллер больше не выводит настройку констрейнтов в View, а настраивает их внутри себя, а так же содержит в себе ViewModel, которая может дать контроллеру все необходимые данные, а сам контроллер (он же View) передает события во вьюМодель, которая проводит некую логику, и передает все обратно.

MVVM example

И самое главное, ведь получается все то, что было в контроллере или "нагружало" его, мы вынесли в ViewModel, соответственно загрузив теперь его тем же самым кодом, мы нагрузили теперь его, а в контроллер мы просто передали ту кучу кода по настройке лайяута, которая была во view при MVC

На мой взгляд это просто смена шила на мыло, и не решает проблему неразделенной ответственности, так в чем же MVVM лучше MVC и почему никто не говорит что MVVM - View and Massive ViewModel? :)


Ответы (0 шт):