Android开源项目分包方式学习(eoe、oschina、github)
2019獨(dú)角獸企業(yè)重金招聘Python工程師標(biāo)準(zhǔn)>>>
總感覺(jué)Android中關(guān)于分包的文章很少,或者幾乎可以說(shuō)沒(méi)有。但是合理地分包,又可以使整個(gè)項(xiàng)目模塊化,減少包與包之間的依賴(lài),讓整個(gè)項(xiàng)目的框架更加清晰,更利于后續(xù)功能的拓展。
因?yàn)闆](méi)有相關(guān)的文章,所以這里曬出三款開(kāi)源項(xiàng)目的分包方式,供大家學(xué)習(xí)。
(一) eoe社區(qū) Android 客戶(hù)端
src
├ cn.eoe.app --存放程序全局性類(lèi)的包?
├ cn.eoe.app.adapter --存放適配器的實(shí)現(xiàn)類(lèi)的包?
├ cn.eoe.app.adapter.base --存放適配器基類(lèi)的包?
├ cn.eoe.app.biz --存放DAO類(lèi)的包?
├ cn.eoe.app.config --存放常量,配置和api接口等類(lèi)的包?
├ cn.eoe.app.db --關(guān)于sqlite操作相關(guān)的類(lèi)的包?
├ cn.eoe.app.db.biz --詳細(xì)的增刪改查類(lèi)的包,暫時(shí)僅有一個(gè)類(lèi)?
├ cn.eoe.app.entity --實(shí)體類(lèi)包?
├ cn.eoe.app.entity.base --實(shí)體類(lèi)基類(lèi)包?
├ cn.eoe.app.https --網(wǎng)絡(luò)訪(fǎng)問(wèn)相關(guān)類(lèi)的包?
├ cn.eoe.app.indicator --導(dǎo)航相關(guān)的類(lèi)包?
├ cn.eoe.app.slidingmenu --滑動(dòng)菜單相關(guān)類(lèi)包?
├ cn.eoe.app.ui --界面相關(guān)的包,activity的類(lèi)?
├ cn.eoe.app.ui.base --activity相關(guān)的基類(lèi)包?
├ cn.eoe.app.utils --工具類(lèi)包?
├ cn.eoe.app.view --Fragment相關(guān)類(lèi)的包?
├ cn.eoe.app.widget --自定義view組件包
?
├ com.google.zxing.camera --第三方定義,控制攝像頭包?
├ com.google.zxing.decoding -- 二維碼圖像解碼包?
├ com.google.zxing.view -- 自定義View,控制拍攝取景框和動(dòng)畫(huà)等
點(diǎn)評(píng):config層是一個(gè)全局都可以訪(fǎng)問(wèn)到的配置層。另一個(gè)就是dao層,這層主要用來(lái)從json字符串中將數(shù)據(jù)提取出來(lái)。其他的也就是比較常見(jiàn)的adatper、ui等層。
(二) 開(kāi)源中國(guó)社區(qū) Android 客戶(hù)端
src
├com.weibo.net — 新浪微博SDK源碼包
├greendroid.widget — 快捷菜單欄組件(國(guó)外UI庫(kù)GreenDroid)
├net.oschina.app — APP啟動(dòng)及管理包
├net.oschina.app.adapter — APP列表適配器包
├net.oschina.app.api — API訪(fǎng)問(wèn)包
├net.oschina.app.bean — APP實(shí)體包
├net.oschina.app.common — APP工具包
├net.oschina.app.ui — APP界面包
├net.oschina.app.widget — APP控件包
點(diǎn)評(píng):開(kāi)源中國(guó)的分包方式簡(jiǎn)單明了,它似乎將大量的業(yè)務(wù)邏輯放在了UI層,不過(guò)項(xiàng)目的業(yè)務(wù)邏輯不多的情況下,這倒也沒(méi)有什么。Adatper層是UI層的數(shù)據(jù)源。Bean層中提供了各種實(shí)體類(lèi)。oschina中沒(méi)有數(shù)據(jù)庫(kù)訪(fǎng)問(wèn)相關(guān)的包。
(三) github Android 客戶(hù)端
由于我沒(méi)有詳細(xì)讀過(guò)github的源代碼,并且網(wǎng)上也沒(méi)有關(guān)于github的Android客戶(hù)端的分包的解析文章,因此下面github分包的解釋可能有誤。
├─com.github.mobile.accounts --賬戶(hù)相關(guān)類(lèi)
├─com.github.mobile.core –業(yè)務(wù)層,實(shí)現(xiàn)整個(gè)客戶(hù)端中的主要業(yè)務(wù)邏輯
│ ├─code
│ ├─commit
│ ├─gist
│ ├─issue
│ ├─ref
│ ├─repo
│ ├─search
│ └─user
├─com.github.mobile.persistence –數(shù)據(jù)持久化層
├─com.github.mobile.sync –同步信息層(不確定是不是這個(gè)作用)
├─com.github.mobile.ui –界面層
│ ├─code
│ ├─comment
│ ├─commit
│ ├─gist
│ ├─issue
│ ├─ref
│ ├─repo
│ ├─search
│ └─user
└─com.github.mobile.util –實(shí)用工具層
點(diǎn)評(píng):github的開(kāi)源客戶(hù)端很明顯地實(shí)現(xiàn)了UI和業(yè)務(wù)邏輯的分離。比較有趣的是,github項(xiàng)目中沒(méi)有獨(dú)立一個(gè)adapter層,而是直接放在了UI層。業(yè)務(wù)邏輯被大量地放在com.github.mobile.core,這個(gè)層里面針對(duì)每一個(gè)界面都單獨(dú)地建立了文件夾,界面中的業(yè)務(wù)邏輯就大量地分布在這些文件夾中。我感覺(jué),跟一個(gè)界面相關(guān)的業(yè)務(wù)邏輯直接集中在一個(gè)文件夾中,而不是分散在各個(gè)不同的包中,其實(shí)挺方便的。
文中涉及的開(kāi)源項(xiàng)目
eoe android客戶(hù)端
github Android客戶(hù)端
oschina android 客戶(hù)端
轉(zhuǎn)載于:https://my.oschina.net/u/1765449/blog/261181
創(chuàng)作挑戰(zhàn)賽新人創(chuàng)作獎(jiǎng)勵(lì)來(lái)咯,堅(jiān)持創(chuàng)作打卡瓜分現(xiàn)金大獎(jiǎng)總結(jié)
以上是生活随笔為你收集整理的Android开源项目分包方式学习(eoe、oschina、github)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Mysql基本用法-left join、
- 下一篇: ExtJS MVC学习手记 1