安卓开发 第二篇 我的安卓应用架构设计

说起架构,很多人可能会觉得那是很高大上的东西,自己是做不到的;说起安卓架构,很多人更是会嗤之以鼻,就安卓应用,所有东西都是在activity里面执行的,直接把业务罗辑写到里面就行了。其实不然,我们做任何事情都需要有规划,这样能够提高效率,同时也会避免后期的混乱。

开发一款app就像建造一幢房屋一样,提前对这幢房屋进行规划,设计,考虑各种因素,然后画出结构图纸,当我们去建造房子的时候才会思路清晰,并且建造起来才会快速(而不是先把房子建出来,觉得不满意就推到重来)。架构的好坏直接决定了你建出来的是城中村还是小区房,是别墅还是土屋,是温馨安全的家还是危楼(有的app改一个地方就会崩)。

对于新项目来说,由于对于业务流程不熟悉,我们可以按照自己的方式快速开发出第一个版本,然后根据需要进行架构设计(不然你可能会比较迷茫,不知道设计架构app的时候某些行为是否有必要,就像有人找你设计建造一个房子,你不知道他具体想要什么样的房子,他的投入是多少等等,然后你就无法凭空设计),重构你的项目。

就像Torvalds说的,与其长时间纠结于各种可选方案,我更倾向于先做出一个哪怕事后证明是错误的决定。是的,架构项目的时候不要空想,如果你确实不知道怎么选择,那就先去敲代码,验证自己的想法,哪怕是错误的,至少自己知道自己错在哪里。重构对于一个程序猿来说,应该是一件稀松平常的事,你不能保证你的每个想法和敲出的代码都是完美的,也许一段时间后,你去看自己以前的代码,你会吃惊的说:“天哪,这是我写的吗,我怎么会写这样糟糕的代码”。

好了,废话就不多说了,接下来就谈谈我的安卓架构设计吧。

我的应用架构设计是基于MVP开发模式和clean架构思想,如果你不知道MVP开发模式,那么请自行谷歌,百度。clean的架构思想是Bob大叔提出的,核心思想是你可以把一个应用划分成许多层,外层对于内层是透明的(内层不知道外层有些什么东西),而内层对外层是完全可见的(想象一下洋葱的结构)。

记得我最开始的时候项目结构是按类型分包,把同类型的类放到同一个包下面,这种方式在App较小的时候还是不错的,可是随着项目的不断壮大,这种方式会明细影响我们的开发效率,同时也不利于代码的管理,所以这时候按功能分包是个不错的选择。

结构图如下:

架构设计图

下面就具体说说。

1.领域通用包(common)

领域通用包包含Android App通用的类和接口,就是放到其他App项目中也可以使用,基本上不会有什么变化。

2.项目专用包(features)

项目专用包包含本项目特有的类和接口,还有项目模块包中各模块可以共用的类和接口,比如Adapter,如果Adapter只在某个项目模块中使用,则放到其被使用的那个项目模块下面,如果有多个项目模块共用一个Adapter,则这个Adapter就放到features中的adapter下面。

3.项目模块包(modules)

根据项目的功能划分模块,这些模块存放于项目模块包下面。

总体上来说,就是这样,关于我的架构设计的细节,会在接下来的文章中慢慢讲述。

如果有更深的理解,本文将会修改;
如果有错误的地方,欢迎指正;
如果你有更好的理解,欢迎交流。

本文为原创文章,版权归博主所有,转载请注明出处。

更多资料:
Android 开发软件架构思考以及经验总结:http://www.codeceo.com/article/android-development-software-architecture.html
Android上实现MVP模式的途径:http://android.jobbole.com/80915/
clean 架构:https://blog.8thlight.com/uncle-bob/2012/08/13/the-clean-architecture.html
我的github地址以及使用demo:< https://github.com/naivor/naivorapp>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值