總感覺android中關于分包的文章很少,或者幾乎可以說沒有。但是合理地分包,又可以使整個項目子產品化,減少包與包之間的依賴,讓整個項目的架構更加清晰,更利于後續功能的拓展。
因為沒有相關的文章,是以這裡曬出三款開源項目的分包方式,供大家學習。
src
├ cn.eoe.app --存放程式全局性類的包
├ cn.eoe.app.adapter --存放擴充卡的實作類的包
├ cn.eoe.app.adapter.base --存放擴充卡基類的包
├ cn.eoe.app.biz --存放DAO類的包
├ cn.eoe.app.config --存放常量,配置和api接口等類的包
├ cn.eoe.app.db --關于sqlite操作相關的類的包
├ cn.eoe.app.db.biz --詳細的增删改查類的包,暫時僅有一個類
├ cn.eoe.app.entity --實體類包
├ cn.eoe.app.entity.base --實體類基類包
├ cn.eoe.app.https --網絡通路相關類的包
├ cn.eoe.app.indicator --導航相關的類包
├ cn.eoe.app.slidingmenu --滑動菜單相關類包
├ cn.eoe.app.ui --界面相關的包,activity的類
├ cn.eoe.app.ui.base --activity相關的基類包
├ cn.eoe.app.utils --工具類包
├ cn.eoe.app.view --fragment相關類的包
├ cn.eoe.app.widget --自定義view元件包
├ com.google.zxing.camera --第三方定義,控制攝像頭包
├ com.google.zxing.decoding -- 二維碼圖像解碼包
├ com.google.zxing.view -- 自定義view,控制拍攝取景框和動畫等
點評:config層是一個全局都可以通路到的配置層。另一個就是dao層,這層主要用來從json字元串中将資料提取出來。其他的也就是比較常見的adatper、ui等層。
├com.weibo.net — 新浪微網誌sdk源碼包
├greendroid.widget — 快捷菜單欄元件(國外ui庫greendroid)
├net.oschina.app — app啟動及管理包
├net.oschina.app.adapter — app清單擴充卡包
├net.oschina.app.api — api通路包
├net.oschina.app.bean — app實體包
├net.oschina.app.common — app工具包
├net.oschina.app.ui — app界面包
├net.oschina.app.widget — app控件包
點評:開源中國的分包方式簡單明了,它似乎将大量的業務邏輯放在了ui層,不過項目的業務邏輯不多的情況下,這倒也沒有什麼。adatper層是ui層的資料源。bean層中提供了各種實體類。oschina中沒有資料庫通路相關的包。
由于我沒有詳細讀過github的源代碼,并且網上也沒有關于github的android用戶端的分包的解析文章,是以下面github分包的解釋可能有誤。
├─com.github.mobile.accounts --賬戶相關類
├─com.github.mobile.core –業務層,實作整個用戶端中的主要業務邏輯
│ ├─code
│ ├─commit
│ ├─gist
│ ├─issue
│ ├─ref
│ ├─repo
│ ├─search
│ └─user
├─com.github.mobile.persistence –資料持久化層
├─com.github.mobile.sync –同步資訊層(不确定是不是這個作用)
├─com.github.mobile.ui –界面層
│ ├─comment
└─com.github.mobile.util –實用工具層
點評:github的開源用戶端很明顯地實作了ui和業務邏輯的分離。比較有趣的是,github項目中沒有獨立一個adapter層,而是直接放在了ui層。業務邏輯被大量地放在com.github.mobile.core,這個層裡面針對每一個界面都單獨地建立了檔案夾,界面中的業務邏輯就大量地分布在這些檔案夾中。我感覺,跟一個界面相關的業務邏輯直接集中在一個檔案夾中,而不是分散在各個不同的包中,其實挺友善的。
文中涉及的開源項目
<a href="https://github.com/eoecn/android-app">eoe android用戶端</a>
<a href="https://github.com/github/android">github android用戶端</a>
<a href="https://github.com/oschina/android-app">oschina android 用戶端</a>
本文版權歸作者所有,歡迎轉載,但未經作者同意必須保留此段聲明,且在文章頁面明顯位置給出原文連接配接,否則保留追究法律責任的權利。
轉載:http://www.cnblogs.com/kissazi2/p/3516439.html