MVC 和 MVVM

谈到MVVM不得不先说一下MVC,MVC(Model-View-Controller)。

Model模型:用来呈现数据。

View视图:用来呈现用户界面。

Controller控制器:用来调节模型与视图之间的交互。

在 iOS 应用中日益增长的重量级视图控制器的问题。在典型的 MVC 应用里, 许多逻辑被放在 View Controller 里。

它们中的一些确实属于 View Controller,但更多的是所谓的“表示逻辑(presentation logic),为了不让控制器日益增大,便于测试管理,便出现了MVVM。

MVVM:它其实是一个 MVC 的增强版,并将表示逻辑从 Controller 移出放到一个新的对象里,即 View Model。

在 iOS 上使用 MVVM 的动机,就是让它能减少 View Controller 的复杂性并使得表示逻辑更易于测试。

ViewModel: 它位于 View / Controller 与 Model 之间。

MVVM 只是将 MVC 中的 controller 中的表示逻辑抽取出来,放置到 viewModel 中, 在 viewModel 中实现数据的处理,(拼接, 比较, 组装等操作), 然后在控制器中使用 ViewModel 层给 View 层传递数据, 最后通过一定的技术手段,来同步 view 和 viewModel, 更新UI及修改数据等操作.

MVVM 相比 MVC 有哪些好处:

1>由于表示逻辑被抽取到 viewModel 中,所以 view 中的代码将会变得非常轻量级.

2>由于 viewModel 中的代码是与 UI 无关的,所有它具有良好的测试性.

3>对于一个封装了大量业务逻辑的 model 来说,改变它可能比较困难,并且存在一定的风险.在这种场景下, viewModel 可以作为 model 的适配器使用,从而避免对 model 进行较大的改动.

你可能感兴趣的:(MVC 和 MVVM)