架构

iOS跳槽宝典-面试技术基础篇--MVC、MVP、MVVM设计模

2018-03-29  本文已影响648人  劳模007_Mars

2.讲一下MVC和MVVM,MVP

关于项目架构方面的面试题几乎在每次面试中都会提到,架构方式有很多种,从最开始的MVC模式,演化到MVP,然后到现在的MVVM模式,在不断的演化过程中核心思想归根结底还是降低各组件之间的耦合度,使得数据的流向更加清晰明了。演化的过程并不意味着新的模式比以前的模式更加高级,只是对于项目的不同场景有了更多的选择方案。下面就针对这三种比较常用的设计模式进行简单的分析和对比,仅供参考。

MVC(Model、View、Controller)

MVC是比较直观的架构模式,最核心的就是通过Controller层来进行调控,首先看一下官方提供的MVC示意图:

MVC.png

Controller可以直接与View对话,通过IBoutlet直接操作View,IBoutlet直接对应View的控件(例如创建一个Button:需声明一个 IBOutlet UIButton * btn),View通过action向Controller报告时间的发生(用户点击了按钮)。Controller是View的直接数据源

优缺点

MVP(Model、View、Presenter)

MVP模式是MVC模式的一个演化版本,其中Model与MVC模式中Model层没有太大区别,主要提供数据存储功能,一般都是用来封装网络获取的json数据;View与MVC中的View层有一些差别,MVP中的View层可以是viewController、view等控件;Presenter层则是作为Model和View的中介,从Model层获取数据之后传给View。

MVP设计模式.png

从上图可以看出,从MVC模式中增加了Presenter层,将UIViewController中复杂的业务逻辑、网络请求等剥离出来。

MVVM(Model、Controller/View、ViewModel)

在MVVM中,view和ViewCOntroller联系在一起,我们把它们视为一个组件,view和ViewController都不能直接引用model,而是引用是视图模型即ViewModel。

viewModel是一个用来放置用户输入验证逻辑、视图显示逻辑、网络请求等业务逻辑的地方,这样的设计模式,会轻微增加代码量,但是会减少代码的复杂性

合理的运用架构模式有利于项目、团队开发工作,但是到底选择哪个设计模式,哪种设计模式更好,就像本文开头所说,不同的设计模式,只是让不同的场景有了更多的选择方案。根据项目场景和开发需求,选择最合适的解决方案。

对于设计模式的理解,就像一千个人眼里就有一千个哈姆雷特一样,以上观点仅供参考,如有差错,欢迎指正。

上一篇下一篇

猜你喜欢

热点阅读