朋友过生日请你帮TA分蛋糕,在座的有年轻人、小孩、老人、男人、女人,你会怎么分?有以下几个选择:
1. 不要分了,把整个蛋糕分给大家;
2. 平均分配,每人吃一样多;
3. 按照各类人群的食量和爱好合理分配。
显然,第三种方法最佳!
我们在开发一款APP之前需要建立好你的packages,如果整个程序开发下来只有一个package,同时开发的模块和功能又多,那么就好比你将一个庞大的蛋糕整个分给一群人去吃,最后的结果会怎样?
在分包的过程中有以下几个原则值得借鉴,但并非万能,在具体情况下要能灵活修正,正所谓“活人不要被尿憋死”,哈哈:
1. 按照android 中四大组件类型进行分包,四大组件分别为:Activities、Service、Content providers、Broadcast receivers,俗称“四大金刚”!如有必要,android 自身的组件也可按照功能进行组合分包;
2. 将你的业务逻辑和 android 组件相分离,业务逻辑与 android 自身的组件不同,它可以完全独立于 android 组件而存在,它无需使用到 android 组件中提供的API(为了与 android 自身组件更好的解耦),相反它以接口的形式提供给 android 组件调用,事实上熟悉设计模式的童鞋应该知道,这就是MVC或者MVP架构中的 Model;
3. 按照功能分割你的Models,这有点废话,Models 直接原本就是各自独立的,傻子才会将它们杂糅在一块让自己闹心;
4. 将你的静态数据和方法分离出来,程序中多个模块不可避免要共用一些静态方法和数据,将它们分离到一个统一的 util 包是一个不错的主意,除了某些工具类只在特定的 Model 中使用外,你都应该将你的公用性静态方法和数据放到 util 包;
5. 尽量将 view adapters 从你的 activities 中分离,除了在你的 APP 中极少使用到 viewadapters 的情况外,我都推荐大家将view adapters 放到一个包中管理,尽量不让我们的 activities 包看起来过于臃肿,尤其避免直接将 adapter 的子类实现在 activity 内部,类本身的臃肿比包的臃肿更让人抓狂!
6. 尽量将 aysnc tasks 从你的 activity 类或者 service类实现中分离,并组合进一个包,原因和第五点一样。注意,最后两点我说的是尽量,也就是说考虑到adapters 和 async tasks 与activity共享数据的方便性,我们经常可以不用严格遵守这两条,这种情况下通常是因为解耦难度太大,然而我们应尽量做到解耦。
合理的分包对于后期的代码维护非常重要,这不仅是一种良好的开发习惯,也是开发高效 android APP 的一个重要要求,请大家千万不要忽略。