无论什么APP,很多开发人员都喜欢把所有的代码、类放在一个项目里,更有甚者,无论是Acitivity还是Adapter都位于一个Package,或者将Adpager内置在Activity中。这就相当于房间里既有餐桌又有马桶,床上还放着酱油瓶。
现在我们来重新规划Andorid项目的目录结构,分以下两步走:
第一步,建立AndroidLib类库,将于业务逻辑无关的逻辑转移到AndroidLib,重构后的项目结构参看下图,其中AndroidDemo为主项目,保持了对AndroidLib的引用,如何设置类库、如何引用请自行百度
项目依赖关系
AndroidLib至少应该包括五大部分,如下图所示:
AndroidLib 项目结构
这几部分的说明如下:
- activity包中存放与业务无关的activity基类,Activity基类分两层,如下图,AndroidLib下的基类baseActivity封装的是与业务逻辑无关的公用逻辑,主项目中的AppBaseActivity基类封装的是与业务相关的公用逻辑。
- fragment包中存放与业务无关的fragment基类
- net包里面存放的是网络底层封装
- cache包里面存放的是缓存数据和图片的相关处理
- ui包里存放的是自定义控件
- utils包中存放的是各种与业务无关的公共方法,比如对sharedPrefrence的封装。
第二步,将主项目中的类分门别类的进行划分,放置在各种包里,如下图所示
AndroidDemo 目录结构
对上图的各个包介绍如下:
- activity:按照模块继续拆分,将不同模块的activity划分到不同的包下
- adapter:所有的适配器放在一起
- entity:所有的实体都放在一起
- db:SQLLite相关逻辑都放在一起
- ui:将自定义控件都放在这个包下面
- utils:将所有的公用方法都放在这里
- interfaces:真正意义上的接口,命名以I作为开头
- listener:基于Listener的接口,命名以On作为开头
这些划分主要为了以下两个目的:
- 每个文件只有一个单独的类,不要嵌套类,比如在Activity中嵌套Adapter、Entity
- 将Activity按照模块划分后,可以迅速定位具体的某个页面每个人都只负责自己的那个包,开发边界线很清晰
俗话说“打扫干净屋子再请客”,对于项目而言,划分好组织结构也是这个道理
网友评论