MVC
1.定义:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。MVC被独特的发展起来用于映射传统的输入、处理和输出功能在一个逻辑的图形化用户界面的结构中。
关系:
View:(视图层),对应于xml布局文件
控制层(Controller)
Android的控制层由Activity来承担,Activity作为初始化话页面和展示数据的操作,这里他负责视图的显示又要加入控制逻辑,承担的功能过多会导致Activity臃肿
模型层(Model):我们针对业务模型,奖励的数据结构和相关的类,主要负责数据的操作,如网络请求,数据库操作,IO操作等
MVP
由MVC演变而来,由于MVC中View层和Model层可以直接交互,代码存在耦合,Activity当了controller和View的角色,在MVC模式下随着界面及其逻辑的复杂度不断提升,Activity类的职责不断增加,以致变得庞大臃肿
视图层:(View)
负责绘制UI 元素,与用户进行交互,对应于xml、Activity、Fragement
控制层:(Presenter)
Presenter是整个MVP 体系的控制中心,作为View和Model的中间枢纽,处理View与Model间的交互和业务逻辑
模型层:Model
负责存储、检索、操纵数据
他们的关系是:View层响应用户请求 ->通过View层里面P的引用调用 P层, ->p层处理具体的业务逻辑通过调用M层引用进行数据处理->M层进行业务处理完成后调用P层传递过来的回调 ->P层在再回调V层的引用进行UI更新
MVVM
MVVM模式(Model--View--ViewModel模式),和MVP模式相比,MVVM 模式用ViewModel替换了Presenter ,其他层基本上与 MVP 模式一致,ViewModel可以理解成是View的数据模型和Presenter的合体。
MVVM采用双向绑定,View的变动自动反应到ViewModel,V与VM通过Databingding实现双向绑定,解决了MVP中P与V关系紧密的问题
视图层:(View)
对应于Activity和xml,负责View的绘制及用户交互
控制层:(ViewModel)创建关联,将Model和view绑定起来,之后model的更改,通过ViewModel反馈给View,从而刷新界面
模型层(Model):负责数据实现和逻辑处理,
View层的Activity通过DataBingding生成Binding实例,把这个实例传递给ViewModel,ViewModel层通过把自身与Binding实例绑定,从而实现View中Layout与ViewModel的双向绑定