- Android Jetpack开发:原理解析与应用实战
- 黄林晴
- 837字
- 2022-07-05 09:43:54
1.1 Android开发架构的发展历程
互联网技术日新月异,越来越多优秀的开发工程师开始追寻更高效率的开发模式,因此,不断涌现出新的软件开发模式,其中MVC、MVP以及MVVM这三种模式一直是软件行业争论的焦点。下面就分别来看一下这三种开发模式在Android应用开发中是如何应用的吧。
1. MVC
MVC的全称是Model-View-Controller,即模型–视图–控制器,Model负责数据的管理,View负责UI的显示,Controller负责逻辑控制。在Android中充当视图层角色的是各种xml文件,充当逻辑控制层角色的是Activity或者Fragment,充当模型层的是网络请求等部分。MVC框架逻辑如图1-1所示。
图1-1 MVC框架逻辑
由于XML的能力较弱,在实际项目中数据设置一般都是在Activity或Fragment中完成的,因此导致Activity既充当了Controller层又充当了View层,且Controller层需要调用Model层获取数据,从而导致绝大多数的任务都是在Controller中完成的,这也就使得Controller层不易维护,因为Model层与View层耦合性较高,容易牵一发而动全身。
2. MVP
MVP的全称是Model-View-Presenter,Model负责数据的管理,View负责UI的显示,Presenter负责逻辑控制,但是与MVC不同的是,MVP改变了通信方向,View层和Model层不再直接通信,而是通过Presenter层作为“中间人”,MVP框架逻辑如图1-2所示。
图1-2 MVP框架逻辑
View层产生事件,通知Presenter层,Presenter层则通知Model层更新数据,Model层更新数据后,返回并通知Presenter层,Presenter层再通知View层更新界面。MVP相比于MVC的好处显而易见,即将View层与Model层解耦,使得每一层的职责更清晰、明确。但MVP作为“中间人”,需要借助接口回调的方式转发消息,从而导致接口类文件增多,且实现类无法避免许多无用的空实现。
3. MVVM
其实MVP已经算是一种很好的开发模式了,MVVM模式则相当于MVP的一种改进版本,MVVM的全称是Model-View-ViewModel,要注意的是,这里的ViewModel并不能直接与Jetpack中的ViewModel组件划等号。
ViewModel中有一个Binder,在不同系统的MVVM开发模式中对Binder有不同的实现,比如前端开发中的Vue.js或iOS开发中的RAC,而在Android开发中充当Binder角色的则是Jetpack组件中的DataBinding,Binder的作用就是替代MVP中Presenter层的“中间人”角色。此模式会将View和ViewModel层完全解耦,从而使得职责划分更清晰,MVVM框架逻辑如图1-3所示。
图1-3 MVVM框架逻辑
MVVM开发模式是当前Google最推荐的开发模式,为了便于使用MVVM开发模式,Google还打造了一套工具集——Jetpack。