│ LoginActivity.java
│ SettingActivity.java
│
├—bean
│ UserBean.java
│
├—db
│ DBManager.java
│
├—fragment
│ NewsFragment.java
│ PictureFragment.java
│
├—net
│ RetrofitManager.java
│
└—service
BackgroundService.java
这也是我们以前开发项目常用的包目录结构。
[](()PBL优点
项目结构简洁明了,上手快;
适合开发人员不多,后期变动不大的项目;
[](()PBL缺点
低内聚
同一个包下会是各种功能模块的集合。比如activity包,下面放置了登录、设置等功能模块;这几个模块本身并没有很强的关联性,却放在了一起,聚合性降低。
高耦合
这里讲的高耦合是指package之间的关联性,比如activity包内的类往往引用到了fragment或者view里面的类,package之间的关联性比较紧密。
开发效率
开发一个功能模块,往往需要到不同的package里面来回切换。比如登录模块,需要到activity里面开发LoginActivity,Activity往往包含了fragment,这时又需要去fragment里面找到对应的fragment来开发。package之间相互切换确实会影响开发效率。同样,修改、调试一个功能也需要这样的操作。如果后期项目功能和代码增多,会大大降低开发效率。
[](()PBF(Package By Feature)
=================================================================================
PBL的意思是:按照功能划分包名。就是app里面有什么功能模块,就以这个功能模块作为包名,所有这个功能模块的开发都在这个包名下进行。
我们看一个很经典的google iosched app的包结构,相信大家对比PBL很容易看出差别。
链接:[https://pan.baidu.com/s/1BAxhmzzfHNOgoXi7caccdw](()
提取码:re55
[](()PBF优点
高内聚
所有功能都在一个包名下面完成。比如map模块:
所有的activity和fragment都在这里面,包括相关的util。
这里需要说明的是,功能模块里面的util一般都是和这个功能模块强相关的,如果是功能模块包名外的util包名,一般放置的是跟项目相关的util类,能作用于整个或 《Android学习笔记总结+最新移动架构视频+大厂安卓面试真题+项目实战源码讲义》无偿开源 徽信搜索公众号【编程进阶路】 者多个功能模块的util类。
其它包名类推,比如ui包名下面放置了BaseActivity。
低耦合
package之间没有很强的关联性,开发此模块的功能只需要在对应的包名下面进行开发即可,除了基础类外,一般不需要引入其它包的类。



