Android組件化—2铐刘、組件化架構

轉自jessyan大佬的github:

https://github.com/JessYanCoding/ArmsComponent

關于組件化的架構我們做了從上至下的劃分陪每,分別為:

宿主層業(yè)務層镰吵、基礎層奶稠。

1、宿主層

宿主層位于最上層, 主要作用是作為一個App殼, 將需要的模塊組裝成一個完整的App, 這一層可以管理整個App的生命周期(比如Application的初始化和各種組件以及三方庫的初始化)

2捡遍、業(yè)務層

業(yè)務層位于中層, 里面主要是根據業(yè)務需求和應用場景拆分過后的業(yè)務模塊, 每個模塊之間互不依賴, 但又可以相互交互, 比如一個商城App由搜索,訂單,購物車,支付等業(yè)務模塊組成。

當然竹握,每個業(yè)務模塊都可以擁有自己獨有的sdk依賴或UI資源画株,如有通用的 可以抽離到CommonSDK或CommonRes中由基礎層管理。

2.1 業(yè)務模塊的拆分

業(yè)務拆分之前需根據初期的產品需求到后期的運營規(guī)劃結合起來清晰的梳理一下業(yè)務在未來可能會發(fā)生的發(fā)展, 考慮業(yè)務劃分的維度啦辐,確定業(yè)務之間的邊界, 以及可能會發(fā)生的變化, 最后再確定下來真正需要拆分出來的業(yè)務模塊再進行拆分谓传。

3 基礎層

基礎層位于最底層,里面又包括核心基礎業(yè)務模塊、公共服務模塊芹关、基礎 SDK 模塊,核心基礎業(yè)務模塊和公共服務模塊主要為業(yè)務層的每個模塊服務,基礎 SDK续挟。

模塊含有各種功能強大的團隊自行封裝的SDK以及第三方SDK(列如網絡請求、圖片加載)侥衬。相當于整個機器的發(fā)動機诗祸,為整個平臺的基礎設施建設提供源源不斷的動力。

3.1 核心基礎業(yè)務

核心基礎業(yè)務為業(yè)務層的每個業(yè)務模塊提供一些與業(yè)務有關的基礎服務,整個項目都依賴于這一塊業(yè)務邏輯轴总,

比如在項目中以用戶角色分為 2 個端口, 用戶可以扮演多個角色, 但是在線上只能同時操作一個端口的業(yè)務,

這時每個端口都必須提供一個角色切換的功能, 以供用戶隨時在多個角色中切換,

這時在項目中就需要提供一個用于用戶自由切換角色的管理類作為核心基礎業(yè)務被這 2 個端口所依賴(類似 拉勾, Boss

直聘等App可以在招聘者和應聘者之間切換直颅、全日制的家長端、學生端怀樟、教師端的賬號角色切換功偿、或者學員切換)

核心基礎業(yè)務的劃分應該遵循是否為業(yè)務層大部分模塊都需要的基礎業(yè)務, 以及一些需要在各個業(yè)務模塊之間交互的業(yè)務, 都可以劃分為核心基礎業(yè)務

3.2 公共服務

公共服務是一個名為CommonService的Module, 主要的作用是用于業(yè)務層各個模塊之間的交互(自定義方法和類的調用), 包含自定義Service接口, 和可用于跨模塊傳遞的自定義類

主要流程是:

提供服務的業(yè)務模塊:

在公共服務(CommonService) 中聲明Service接口 (含有需要被調用的自定義方法), 然后在自己的模塊中實現這個Service接口, 再通過ARouter API暴露實現類

使用服務的業(yè)務模塊:

通過ARouter的API拿到這個Service接口(多態(tài)持有, 實際持有實現類), 即可調用Service接口中聲明的自定義方法, 這樣就可以達到模塊之間的交互

跨模塊傳遞的自定義類:

在公共服務中定義需要跨模塊傳遞的自定義類后

(Service中的自定義方法和EventBus中的事件實體類都可能需要用到自定義類), 就可以通過ARouter API,

在各個模塊的頁面之間跨模塊傳遞這個自定義對象

(ARouter要求在URL中使用Json參數傳遞自定義對象必須實現SerializationService接口)

最好在 CommonService 中給每個需要提供服務的業(yè)務模塊都建立一個單獨的包, 然后在這個包下放 Service 接口 和 需要跨模塊傳遞的自定義類, 這樣更好管理

下一篇:組件化如何具體實現

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
  • 序言:七十年代末往堡,一起剝皮案震驚了整個濱河市械荷,隨后出現的幾起案子共耍,更是在濱河造成了極大的恐慌,老刑警劉巖吨瞎,帶你破解...
    沈念sama閱讀 222,252評論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件痹兜,死亡現場離奇詭異,居然都是意外死亡关拒,警方通過查閱死者的電腦和手機佃蚜,發(fā)現死者居然都...
    沈念sama閱讀 94,886評論 3 399
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來着绊,“玉大人谐算,你說我怎么就攤上這事」槁叮” “怎么了洲脂?”我有些...
    開封第一講書人閱讀 168,814評論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長剧包。 經常有香客問我恐锦,道長,這世上最難降的妖魔是什么疆液? 我笑而不...
    開封第一講書人閱讀 59,869評論 1 299
  • 正文 為了忘掉前任一铅,我火速辦了婚禮,結果婚禮上堕油,老公的妹妹穿的比我還像新娘潘飘。我一直安慰自己,他們只是感情好掉缺,可當我...
    茶點故事閱讀 68,888評論 6 398
  • 文/花漫 我一把揭開白布卜录。 她就那樣靜靜地躺著,像睡著了一般眶明。 火紅的嫁衣襯著肌膚如雪艰毒。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,475評論 1 312
  • 那天搜囱,我揣著相機與錄音丑瞧,去河邊找鬼。 笑死犬辰,一個胖子當著我的面吹牛嗦篱,可吹牛的內容都是我干的。 我是一名探鬼主播幌缝,決...
    沈念sama閱讀 41,010評論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼灸促,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起浴栽,我...
    開封第一講書人閱讀 39,924評論 0 277
  • 序言:老撾萬榮一對情侶失蹤荒叼,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后典鸡,有當地人在樹林里發(fā)現了一具尸體被廓,經...
    沈念sama閱讀 46,469評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,552評論 3 342
  • 正文 我和宋清朗相戀三年萝玷,在試婚紗的時候發(fā)現自己被綠了嫁乘。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,680評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡球碉,死狀恐怖蜓斧,靈堂內的尸體忽然破棺而出,到底是詐尸還是另有隱情睁冬,我是刑警寧澤挎春,帶...
    沈念sama閱讀 36,362評論 5 351
  • 正文 年R本政府宣布,位于F島的核電站豆拨,受9級特大地震影響直奋,放射性物質發(fā)生泄漏。R本人自食惡果不足惜施禾,卻給世界環(huán)境...
    茶點故事閱讀 42,037評論 3 335
  • 文/蒙蒙 一脚线、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧弥搞,春花似錦殉挽、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽一死。三九已至肛度,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間投慈,已是汗流浹背承耿。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留伪煤,地道東北人加袋。 一個月前我還...
    沈念sama閱讀 49,099評論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像抱既,于是被迫代替她去往敵國和親职烧。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 45,691評論 2 361