当前位置:网站首页>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!
- 模型层(
边栏推荐
- Log management
- Solve the problem that ${pagecontext.request.contextpath} is invalid
- C language programming (Third Edition)
- Is low code the future of development? On low code platform
- Brief description of tenant and multi tenant concepts in cloud management platform
- Flume incrementally collects MySQL data to Kafka
- 201403-1
- Yys mouse connector
- TP5 rewrite paging
- TSMC's 6-nanometer manufacturing process will enter trial production in the first quarter of next year
猜你喜欢

Filament Creator材质编辑工具的实现

DRF learning notes (II): Data deserialization

Handling of multiple parts with duplicate names and missing parts when importing SOLIDWORK assemblies into Adams

Axure install Icon Font Catalog

COMS Technology

Log management

Introduction to JWT

C channel simply implements the publishing and subscription of message queue

Cron expression use

Supplement - example of integer programming
随机推荐
T5 learning
Opencv (IV) -- image features and target detection
知网、万方数据库免费下载论文------比连接学校内网速度快数倍不止(有的学校万方数据库不支持下载)
matlab legend用法
google chrome revercecaptcha广告屏蔽
Brief description of tenant and multi tenant concepts in cloud management platform
Common Oracle statements
COMS Technology
Thesis reduction
Coding skills - Global exception capture & unified return body & Business exception
最大子段和 Go 四种的四种求解
雪花ID(Go 实现)
Insert pictures in word to maintain high DPI method
Solve the problem that Flink cannot be closed normally after startup
Snowflake ID (go Implementation)
DRF learning notes (IV): DRF view
The image displayed online by TP5 is garbled
KMEANS 实现
Simulation生成报表
Two methods of generating excel table with PHP