Android 项目的架构模式
架构是以组件、组件之间的关系、组件与环境之间的关系为内容的某一系统的基本组织结构,以及指导内容涉及与演化的原理。
架构模式,更多的是代表一种思想、往往一种架构模式会有多种不同的实现方式,方式之间本质上没有对错之分,只有合适与否。分析一种架构主要从以下几点来看:
(1)架构解决了怎样的问题,当前架构需要解决什么问题才被创建并利用。也就是架构存在的意义。
(2)架构模式是怎么样划分角色的,架构中往往通过不同的角色划分来实现解耦,不同的架构模式也就是利用不同划分角色的规则来实现架构的基本思想。
(3)角色之间是如何建立通信的,角色之间的通信理解为数据流向,Android中,数据流向主要分为两类,第一类就是数据结构,也就是网络请求的处理、另一类就是事件,也就是控件产生的动作。
对于Android开发者来说,常见的架构模式基本上就是三种,分别是MVC、MVP、MVVM。
一、MVC模式的架构图:
1.MVC模式解决的问题:控制逻辑、数据处理逻辑与页面交互耦合。
model:负责数据的加载与存储。
view:负责界面的展示。
controller:负责控制逻辑。
优点:结构清晰、职责划分清晰,降低耦合、有利于组件重用。
缺点:增加了代码的复杂性。
二、MVP架构模式
MVP模式解决的问题:控制逻辑、数据处理与页面交互耦合,同时将MVC中的view和model解耦。
model:负责数据的加载与存储。
view:负责页面的展示。
presenter:负责控制逻辑。
presenter充当中间人的作用,与model和view进行数据交互,将view与model串联起来。
优点:结构清晰、职责划分清晰、模块之间充分解耦、有利于组件重用。
缺点:引入大量的接口,文件数量激增、增加代码的结构复杂性。
三、MVVM架构模式
MVVM要解决的问题是:控制逻辑、数据处理逻辑与页面交互耦合,并且同时能将mvc中的view和model解耦,还可以吧MVP中的presenter和view解耦。
model:负责数据的加载和存储。
view:负责页面的展示。
viewModel:负责逻辑控制。
MVVM的数据流向:view产生的事假,自动通知给ViewModel,ViewModel中进行逻辑处理后,通知model更新数据,model更新数据后,通知数据结构给viewmodel,viewmodel自动通知view更新页面。
有点:结构清晰、职责划分清晰、模块间充分解耦、在MVP的基础上,MVVM把View 和ViewModel也进行了解耦。
缺点:debug困难,代码的复杂性大。