Android常用的架构MVC、MVP、MVVM
全名Model View Controller,是模型-视图-控制器的缩写
Model:模型层,负责处理数据的加载与存储View:视图层,负责界面数据的展示,与用户进行交互Controller:控制层,负责业务逻辑的处理缺点:Activity内即由View,也有Controller,代码容易膨胀
全名Model View Presenter,是从MVC演变而来,主要是解决MVC中Activity中指责过多的问题,把View和Model分离,通过Presenter交互
Model:模型层,负责处理数据的加载或存储。与MVP中的M一样。View:视图层,负责界面数据的展示,与用户进行交互。与MVP中的V一样。Presenter:负责逻辑业务的处理。跟MVC中的C的区别就是View和Model的交互通过Presenter处理缺点:业务逻辑复杂时,涉及VP(View层告诉Presenter层做什么)、PM(Presenter层告诉Model层做什么)、PV(Presenter层告诉View做什么)相关接口较多,如果逻辑容易变,增加维护成本
全名model view viewholder,相当于MVP的升级版,主要是降低了View和控制模块的交互,增加了双重绑定
Model:模型层,负责处理数据的加载或存储。与MVP中的M一样。View:视图层,负责界面数据的展示,与用户进行交互。与MVP中的V一样。ViewModel:视图模型,负责完成View于Model之间的双向绑定缺点:数据绑定后出现问题不容易定位,且DataBing相对内存消耗过大,且编译事件长
其中MVP中接口定义就是确定了流程,示例如下:
//View层交互,Model层交互共同的需求 public interface DownLoaderContract { //P层告诉M层,需要做什么事情, 去下载图片 interface PM{ void requestDownloader(ImageBean imageBean) throws Exception; //2 } interface PV { //V层告诉P层做什么, 需要下载图片 void requestDownLoader(ImageBean imageBean); //1 //P层得到M层的结果返回,再通知V层 void responsDownloaderResult(boolean isSuccess,ImageBean imageBean); //3 } }总结:由接口我们找到首先Activity调用Presenter层的requestDownLoader请求下载,第二步时Presenter层调用Model层的requestDownloader下载图片,下载完成后,通知Presenter层数据,然后Presenter层调用View的responsDownloaderResult,通知View层数据,然后由View层根据数据显示出来