当前位置:网站首页>mvc和mvp和mvvm的区别
mvc和mvp和mvvm的区别
2022-07-27 14:48:00 【白马镇的少年】

MVC,MVP,MVVM设计架构的区别,相信大家对这几个概念都有所了解。
首先,明确一点,架构的目的就是为了提高开发效率,降低维护成本。
利用面向对象的设计原则,对每个模块的职责进行合理的划分,为了让其他人更好的理解架构设计思想,然后给予每个模块一个通用的名词解释,为了更好的说清楚数据绑定,这里就简单解释一下目前常见的几种架构(以Android为例)。
MVC:- 模型层(
Model),负责处理数据逻辑,一般包含数据库、本地数据、网络获取的Bean等组成。 - 视图层(
View),负责处理视图显示,一般由XML布局承担此责任,基本组件和自定义View等充当视图层的补充元素。 - 控制层(
Control),负责处理业务逻辑,一般由Activity、Fragment承担此责任。
- 模型层(
MVP:- 模型层(
Model),负责处理数据逻辑,一般包含数据库、本地数据、网络获取的Bean等组成。 - 视图层(
View),负责处理视图显示,一般由XML布局承担此责任,基本组件和自定义View等充当视图层的补充元素,Activity、Fragment充当视图层和控制层的粘合剂。 - 逻辑层(
Presenter),负责处理业务逻辑,由从原来MVC控制层中抽取出来的Presenter充当控制层(Presenter)。
- 模型层(
MVVM:- 模型层(
Model),负责处理数据逻辑,一般包含数据库、本地数据、网络获取的Bean、(这里我单独抽取的视图数据ViewData概念也属于Model层)等组成。 - 视图层(
View),负责处理视图显示,一般由XML布局承担此责任,基本组件和自定义View等充当视图层的补充元素,Activity、Fragment主要负责视图层绑定事件触发,熟练的话也可以直接在XML中绑定触发事件。 - 逻辑层(
ViewModel),通过数据绑定连接View和Model(这里由ViewData充当视图模型被绑定到视图上)实现视图层和模型层的解藕,事件触发后通过ViewModel处理业务逻辑,并且通过数据驱动的方式修改视图数据,而达到间接修改视图的功能。注意:ViewModel一定不能持有视图层的引用,同样不能持有Context的引用!不然还是MVP!
- 模型层(
MVC,MVP,MVVM设计架构的区别,相信大家对这几个概念都有所了解。
首先,明确一点,架构的目的就是为了提高开发效率,降低维护成本。
利用面向对象的设计原则,对每个模块的职责进行合理的划分,为了让其他人更好的理解架构设计思想,然后给予每个模块一个通用的名词解释,为了更好的说清楚数据绑定,这里就简单解释一下目前常见的几种架构(以Android为例)。
MVC:- 模型层(
Model),负责处理数据逻辑,一般包含数据库、本地数据、网络获取的Bean等组成。 - 视图层(
View),负责处理视图显示,一般由XML布局承担此责任,基本组件和自定义View等充当视图层的补充元素。 - 控制层(
Control),负责处理业务逻辑,一般由Activity、Fragment承担此责任。
- 模型层(
MVP:- 模型层(
Model),负责处理数据逻辑,一般包含数据库、本地数据、网络获取的Bean等组成。 - 视图层(
View),负责处理视图显示,一般由XML布局承担此责任,基本组件和自定义View等充当视图层的补充元素,Activity、Fragment充当视图层和控制层的粘合剂。 - ??(
Presenter),负责处理业务逻辑,由从原来MVC控制层中抽取出来的Presenter充当控制层(Presenter)。
- 模型层(
MVVM:- 模型层(
Model),负责处理数据逻辑,一般包含数据库、本地数据、网络获取的Bean、(这里我单独抽取的视图数据ViewData概念也属于Model层)等组成。 - 视图层(
View),负责处理视图显示,一般由XML布局承担此责任,基本组件和自定义View等充当视图层的补充元素,Activity、Fragment主要负责视图层绑定事件触发,熟练的话也可以直接在XML中绑定触发事件。 - ??(
ViewModel),通过数据绑定连接View和Model(这里由ViewData充当视图模型被绑定到视图上)实现视图层和模型层的解藕,事件触发后通过ViewModel处理业务逻辑,并且通过数据驱动的方式修改视图数据,而达到间接修改视图的功能。注意:ViewModel一定不能持有视图层的引用,同样不能持有Context的引用!不然还是MVP!
- 模型层(
边栏推荐
- training on multiple GPUs pytorch
- 清晰的认识Torchvision(思维导图版)
- Opencv (IV) -- image features and target detection
- Jupyter creates a virtual environment and installs pytorch (GPU)
- The 21st - -- the 30th time
- matlab legend用法
- DRF use: get request to get data (small example)
- my_ Ls summary
- DRF learning notes (II): Data deserialization
- TP5 query empty two cases
猜你喜欢

Opencv (II) -- basic image processing

Rotate string left

第21回---第30回

Introduction to JWT

my_ls小结

The 31st --- the 52nd

【论文阅读】Transformer with Transfer CNN for Remote-Sensing-ImageObject Detection

201403-1

Boolean value

Handling of multiple parts with duplicate names and missing parts when importing SOLIDWORK assemblies into Adams
随机推荐
Use of arrow function
Gpt-2 text generation
MapReduce instance (I): wordcount
2021-06-02
DRF learning notes (preparation)
Some queries of TP5
CCF-201312-1
DRF learning notes (IV): DRF view
第31回---第52回
最大子段和 Go 四种的四种求解
雪花ID(Go 实现)
Mazak handwheel maintenance Mazak little giant CNC machine tool handle operator maintenance av-eahs-382-1
pdf 提取文字
KMEANS 实现
EXE程序加密锁
Install MySQL using CentOS yum
What is ti's calculation for successively canceling the agency rights of anfuli / Wenye / Shiping?
C语言逆序输出字符串
DRF learning notes (I): Data Serialization
training on multiple GPUs pytorch