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!
- 模型层(