浅析MVC,MVP和MVVM架构

本文首发于公众号【程序员华仔】

本文不是详细讨论MVC,MVP和MVVM架构的设计思想,也没有具体的实际操作可展示。

只是想讨论下:再面试的时候,面试官问到这个问题的时候,如何回答。仅此而已。

MVC(Model-View-Controller)

即是模型-视图-控制器。

经典设计模式,但不属于23种设计模式.

把系统划分成Model,View和Controller三个部分,分别代表模型,界面和业务控制器。

MVC的目的是将M层和V层的代码分离,使业务中的数据和视图隔离开来。这样做的好处是数据是Model里面,界面在View里面。

数据和视图的纽带就由Controller来完成,Controller层处理所有的业务逻辑。

这个架构优缺点如下:

优点:数据和界面分离。

缺点:所有的业务都放在Controller层,加重了Controller的负担,使Controller成为"厚"部分.

MVP(Model-View-Presenter)

即是模型-视图-表示器

把MVC中的Controller替换成presenter。

M层和V层还是MVC架构一样的含义。

P层:用于连接M层、V层,完成M层与V层的交互并处理了所有的业务逻辑。

M层与P层相互通信, V层和P层相互通信,但是M层和V层没有联系。M层与V层的通信,都通过P中间层来完成。

这个架构的优缺点如下:

优点:一般通过接口(具体就是协议)实现 Model与Presenter,View与Presenter的通信。

缺点:

1. 繁重的业务都承接在Presenter层,导致Presenter层比较复杂。

2.V层,M层都是通过P层的接口进行通讯,当要修改时,牵涉到的接口都要修改一遍,费时费力。

MVVM(Model-View-ViewModel)

即是模型-视图-视图模型.

这个架构,本质上由数据驱动界面。具体来说,就是通过KVO键值来观察数据的变化, 然后通过block来驱动界面刷新(block的调用).

它最大的特点就是ViewModel层,实现数据的双向绑定(当M层中的数据发生改变时,V层就感知到;当V层的数据发生变化时,M层也能感知到)。ViewModel层通过KVO机制,实现了M层和V层的数据同步自动化,解决了 MVP 框架中数据同步比较麻烦的问题。同时使用block机制通知界面刷新和更新数据。

以上就是MVC,MVP和MVVM的简单说明。这个说明解决不了项目中实际问题,只能帮助你在面试的时候,拣重要的说。 希望能帮助有需要的人。

 

你可能感兴趣的:(IOS开发,大数据)