转载请注明链接:https://blog.csdn.net/feather_wch/article/details/79729132
Android架构(MVC/MVP/MVVM与模块化、组件化)
版本:2019/3/2-1(10:00)
MVC
1、Android中MVC是什么?特点?
Model
:针对业务模型建立的数据结构和类(与View无关,只与业务相关)View
:XML/JAVA
或者JS+HTML
进行页面的显示。Controller
:Android
的控制层通常在Activity、Fragment
之中。
本质就是Controller
操作Model
层的数据,并且将数据
返回给View
层展示。
2、Android的MVC的缺点:
Activity
并不是MVC
中标准的Controller
,既有Controller
的职责也有View
的职责,导致Activity
的代码过于臃肿。View层
和Model层
互相耦合,不易于开发和维护。
MVP
3、Android中的MVP模式
MVP(Model-View-Presenter)
Model
:主要提供数据的存储功能。Presenter
需要通过Model
存取数据。View
: 负责处理点击事件和视图展示
(Activity、Fragment或者某个View控件
)Presenter
:View和Model
之间的桥梁,从Model
检索数据后返回给View
层。使得M/V
之间不再有耦合关系。
4、MVP和MVC的区别
MVP
中绝对不允许View
直接访问Model
- 本质是
增加了一个接口
降低一层耦合度
5、MVP的特点
Presenter
完全将Model
和View
分离,主要逻辑处于Presenter
中。Presenter
和具体View
没有直接关联,通过定义好的接口
进行交互。View
变更时,可以保持Presenter
不变(符合面向对象编程的特点)View
只应该有简单的Set/Get
方法、用户输入、界面展示的内容,此外没有更多内容。
6、MVP的缺点
MVP
的中使用了接口的方式去连接view层
和presenter层
,如果有一个逻辑很复杂的页面,接口会有很多,导致维护接口的成本非常大。解决办法
:尽可能将一些通用的接口作为基类,其他的接口去继承。
7、MVP的实现
Model层
//Model层-数据的实体类:NetInfo.java
public class NetInfo {
private int code;
private String msg;
public NetInfo(int code, String msg){
this.code = code;
this.msg = msg;
}
public int getCode() {
return code;
}
public void setCode(int code) {
this.code = code;
}
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
}
//Model层-请求数据时View和Model的交互接口(中间层Presenter去实现):LoadTasksCallBack.java
public interface