安卓开发架构---MVP
为什么需要架构设计呢?
在安卓开发中,我们通过架构设计使程序更模块化
这样可以做到:模块内高度耦合、模块间低耦合
这样使得每个开发人员只专注于自己的那一部分模块,提高程序的开发效率
MVC模式
把软件分为三部分:model(数据)、view(用户界面)、controller(控制器–业务逻辑)
MVC是一种经典的软件设计典范,通过将界面展示、数据处理和业务逻辑处理分离,实现对界面进行个性化定制时,不需要重新编写业务逻辑
这三个模块之间的通信方式:
MVC在android中具体应用
下图为参考某一博客中的流程图,博客地址在参考中给出!
view层(视图层)
界面布局采用xml文件。
逻辑中与界面对应的id不变化,则代码不用修改
增强了代码的可维护性
监听model层是否有数据更新
controller层(控制层)
主要由Activity实现,controller层接受用户所有的操作,并根据需求触发model层,或者触发view层
或者两者都触发
controller对view层会进行操作反馈,但是不会修改view层中的数据
model层(数据层)
model层根据controller层的指令执行,修改数据or不修改数据
修改数据时model层会与view层进行通信
MVC的缺点
1.可以看出大量的逻辑和代码都会集中在controller层,controller层的压力很大,但是view层的独立处理事件的能力没有用到
2.controller层和view层之间是一一对应的,view层不能复用,因此产生了很多冗余代码
MVP模式
MVP主要是将APP分为:model模块、view模块、presenter模块
MVC中view层可以监听model层来进行数据更新,在MVP中,view层和model层是完全独立的
具体通信方式如下:
具体来说:
view层(视图层)
view层:负责绘制UI元素,与用户进行交互,向presenter层报告用户行为。通常使用Activity或者Fragment作为view层
presenter层(业务逻辑层)
presenter层:业务逻辑层,负责view层和model层之间的交互,从model层拿到数据响应到view层,并且响应view层的用户的行为
model层(数据层)
model层:数据层,操作、检索、存储数据
MVP的优点
这样做的优点:
1.model层和view层完全分开,model层和view层是通过presenter层来交互的,我们可以修改view层,而不改变model层。因为view层的改变总是要比model层频繁。
2.从MVC到MVP,引入presenter层是为了将此前Activity中包含的大量逻辑操作转到presenter层,这样Activity不会太臃肿。
3.更高效的使用模型,所有的交互都发生presenter层
举个例子:当用户在界面的editText中输入了文字之后,view层会通知presenter层,presenter层响应view层的用户行为,应该找哪个model去完成这次响应,最后presenter层将完成的结果更新到view层
p层通过model层和view层定义的接口来操作model和view,这样activity就可以把所有的逻辑交给presenter,java逻辑就会从app的activity中分离出来
参考
https://www.tianmaying.com/tutorial/AndroidMVC
http://c.biancheng.net/view/7743.html