复杂的软件必须有清晰合理的架构,否则难以开发和维护。 架构设计的目的是通过设计使程序模块化,做到模块内部的高聚合和模块之间的低耦合。使得程序在开发的过程中,开发人员只需要专注于一点,从而提高程序开发的效率,同时方便进行后续的测试以及定位问题。近些年,有许多Android架构在开发社区中颇受青睐,比如MVP或MVVM,讨论它们的人越来越多。因此在这里对它们进行简要介绍。

 

1.MVP介绍

(1)MVP 全称Model-View-Presenter,它是MVC架构的一种演变。

Model (模型) 、View(视图)、Presenter(表示器)

(2)分层

Model层是应用程序中的数据处理和业务逻辑部分,负责访问数据。

数据可以是远端的Server API、本地数据库或SharedPreference等。

View层负责处理用户事件和视图部分的展示。  在Android中,它可能是Activity或者Fragment类。

Presenter层是View与Model之间的适配器,也称指挥器。处在View和Model之间,负责从Model中获取数据,然后返回给View。同时决定视图上的交互的处理。 

(3)MVP处理流程:

用户的请求首先会到达View,View传递请求到特定的Presenter,Presenter从Model获取数据后,再把处理结果通过接口传递到View。

(4)MVP模式的好处与缺点

好处:优化了代码的维护性与拓展性,同时对代码进行深度解耦使得各个层级的分工更加明晰。

缺点:代码量增多;项目结构会对后期的开发和维护有一定的影响。

(5)MVP与MVC的区别

在MVP中,View并不直接使用Model,它们之间的通信是通过Presenter (MVC中的Controller) 来进行的,所有的交互都发生在Presenter内部。

在MVC中,View会直接从Model中读取数据,而不是通过 Controller。

 

2.MVVM介绍

(1)MVVM 全称 Model-View-ViewModel。 

(2)分层

Model:数据模型层。包含业务逻辑和校验逻辑

View:定义结构,布局和View 在屏幕上的显示

ViewModel: 充当View和Model之间的连接桥梁,处理视图逻辑。

可以看到MVVM模式与MVP模式非常类似,可以看作MVP的升级版。ViewModel可以理解成是View的数据模型和Presenter的合体。

ViewModel和View之间的交互通过Data Binding完成,而Data Binding可以实现双向的交互,这就使得视图和控制层之间的耦合程度进一步降低,关注点分离更为彻底,

同时减轻了Activity的压力。

(3)MVVM处理流程:

MVVM模式与MVP模式的区别是它采用双向绑定: 即View 的变动,自动反映在 ViewModel,反之亦然。这样开发者就不用处理接收事件和View更新的工作,因为框架已经帮你做好了。


以上是我关于Android APP设计架构上面的一些了解,并没有以实际项目进行具体讲解,只是对MVP和MVVM两种架构设计模式进行简要介绍。

个人的水平有限,若有错误,敬请指正。(凡星逝水2017)