Android框架式编程之架构⽅案
⽬前移动端应⽤市场已经是百花齐放,很多独⾓兽公司都是通过App创业发展起来的,现在App类型更加丰富,功能越来越完善,基本上涵盖了各个⾏业的每个⾓落。为了开发出更加有竞争⼒的App,不仅需要功能上有创新,内容也需要更加多元化,这样就出现了相对巨⼤的⼯程。这些⼯程代码不停添加,如果没有⼀个好的架构,那么所有代码都会强耦合在⼀起,功能之间也会出现很多依赖,那么就会出现很多问题,例如:
1、修改功能困难,牵⼀发动全⾝。很多地⽅如果api写的不好,封装不优雅,那么就会出现改⼀个地⽅需要改很多地⽅的调⽤。
2、更新迭代⼯作中冗余废弃代码资源过多造成删除冗余变得很复杂,并且很可能出现很多bug。
为了解决上述的问题,经过长时间摸索和发展,当今已经有相当成熟的⽅案来保证尽量避免上述问题的出现。⽽架构就是为此⽽⽣的概念,架构在实际开发中⼜分为代码架构和项⽬架构。其中:
1、代码架构主要分为三类:MVC、MVP 和 MVVM。
2、项⽬架构主要分为:单⼯程模式、模块化、组件化、插件化。
单⼯程:此模式就不多说了,就是我们所有的代码都放置在主module下,不对代码进⾏按照功能模块进⾏多module的处理。
android编程入门指南 pdf模块化:根据项⽬的特点,将⼀个项⽬的可以共享的部分抽离出来,形成⼀个独⽴的module,这就是模块化。模块化的内容不仅仅可以包含公共部分,⼀些相对独⽴的业务模块也是可以模块化的。
组件化:组件化是基于模块化的进⼀步演进,⼀个变种。组件化与模块化的不同在于,组件化的核⼼是模块⾓⾊的可转化性,在打包时是libiary,但是在调试的时候为Application。组件化的单位就是组件。(编译时)
插件化:插件化是将⼀个⼯程,按照业务划分为不同的插件,来化整为零,相互配合。插件化的单位是apk,可以实现apk的动态加载和动态更新,⽐组件化更加灵活。(运⾏时)
⼀、代码架构
1. 三⼤代码架构⽅案的区别⽐较:
MVC是⼀个⼴义的架构⽅法,将逻辑、数据、视图分离的代码架构,但是因为Android开发的特点,会导致C和V层在实际的代码中出现⽐较⼤的耦合。
MVP是⼀个⼴义的架构,适⽤于⾯向实体或者虚拟⽤户接⼝的开发,它是基于MVC的基础上,通过依赖倒置来解决Android开发过程中逻辑复⽤难、实现更替难的问题。
MVVM是⼀种页⾯开发的架构,基于数据驱动,通过只操作 ViewModel 中映射的视图数据来刷新视图状态,以此来解决视图调⽤的⼀致性问题,从⽽规避不可预期的错误。
总结:MVP 和 MVVM ⼆者之间没有任何关系。MVP 是对 MVC 的升级,⽽ MVVM 是现代化软件开发模式的范例。
2. JetPack MVVM 架构
在⾕歌官⽅提供的MVVM架构中,提供了:Lifecycle、LiveData、ViewModel、DataBinding 组件。下⾯逐⼀介绍⼀下这些组件的作⽤:Lifecycle 的存在解决了⽣命周期管理的⼀致性问题
LiveData 的存在,帮助新⼿⽼⼿都能不假思索地遵循通过唯⼀可信源分发状态的标准化开发理念,从⽽在快速开发过程中规避⼀系列难以追溯、难以排查、不可预期的问题。
ViewModel 的存在,主要是为了解决状态管理和页⾯通信的问题。
DataBinding 的存在,主要是为了解决视图调⽤的⼀致性问题。
⼆、项⽬架构
项⽬架构的核⼼思想:分层和通信。
1. ⼦模块的划分
除了常见的common部分抽离,业务模块的划分尤为重要,相⽐于狭义上的架构,⼴义上的⼦系统的划分的关注点,很考验技术经验以及对业务的理解。
2. 通信⽅式
模块化的通信⽅式,⽆⾮是相互引⼊;抽取出来了common模块, 其他模块使⽤⾃然要引⼊这个module
组件化的通信⽅式,按理说可以划分为多种,主流的是隐式和路由。隐式的存在使解耦与灵活⼤⼤降低,因此路由是主流。
插件化的通信⽅式,不同插件本⾝就是不同的进程了。因此通信⽅式偏向于Binder机制类似的进程间通信。
推荐资料:
1. 是让⼈提神醒脑的 MVP、MVVM 关系精讲:
2. 是让⼈⽿⽬⼀新的 Jetpack MVVM 精讲:
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论