MVC、MVP、MVVM设计模式
2020-05-17 本文已影响0人
feifei_fly
一、设计模式介绍
1、MVC 架构

MVC 是一种使用 MVC(Model View Controller 模型-视图-控制器)
- Model(模型)表示应用程序核心(如数据库)
- View(视图)显示效果(HTML页面)。
- Controller(控制器)处理输入(业务逻辑)
Model(模型)是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。
View(视图)是应用程序中处理数据显示的部分。通常视图是依据模型数据创建的。
Controller(控制器)是应用程序中处理用户交互的部分。
通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据。
2、MVP架构

Model-View-Presenter ;MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。
优点:
- 模型与视图完全分离,我们可以修改视图而不影响模型
- 可以更高效地使用模型,因为所有的交互都发生在一个地方——Presenter内部
- 我们可以将一个Presenter用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。
- 如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)
3、MVVM 架构

二、区别于对比
1、MVP与MVC区别:
- MVC 在Android应用中,Actvity 很多时候即做View 也做Controller,导致Activity比较臃肿;同时View和Model层也不是完全隔离的。Model层可以发数据给View层 直接更新View。
- MVP 就实现了View和Model的完全隔离。View 通过接口持有Presenter、Presenter通过接口持有View。(通过接口,而不是直接引用,可以便于一个Presenter应用于多个View)
2、MVVM和MVP的区别
- MVVM 和 MVP 都实现了View和Model的隔离。但是MVP使用过接口来实现View和Presenter通信的,实现的时候要写很多的模板代码(接口的定义和组装),不是很优雅。
- MVVM 就引入了双向数据绑定机制,使代码更加优雅,减少了MVP中的模板代码。
三、参考文章
https://www.jianshu.com/p/ff6de219f988
https://www.tianmaying.com/tutorial/AndroidMVC