一.整體架構(gòu)
整個(gè)APP架構(gòu)上從上到下分為三層考赛,獨(dú)立于APP的通用層巢株,通用業(yè)務(wù)層廊驼,業(yè)務(wù)層郑临。業(yè)務(wù)層用來處理上層業(yè)務(wù)栖博,業(yè)務(wù)層可以依賴通用業(yè)務(wù)層和獨(dú)立于APP的通用層,而且這種依賴是單向的厢洞,由上到下的仇让,不能下層依賴上層。
1.首先客戶端整體架構(gòu)的最底層有一個(gè)獨(dú)立于APP的通用層躺翻,在這一層里有崩潰的統(tǒng)計(jì)丧叽,網(wǎng)絡(luò)的第三方,分享的第三方庫等公你。也就是說這一層的框架或者說架構(gòu)放在任何一個(gè)APP當(dāng)中踊淳,都可以起到一個(gè)底層的支撐作用,它是獨(dú)立于APP之上的陕靠。
2.在獨(dú)立于APP的通用層之上迂尝,有一個(gè)通用的業(yè)務(wù)層脱茉。比如說針對當(dāng)下公司,他有一些通用的基礎(chǔ)組件垄开,比如說第三方庫的二次封裝琴许,toast,刷新控件等溉躲,這些往往是和當(dāng)下公司的業(yè)務(wù)相關(guān)的虚吟。但是對于APP來說,各個(gè)業(yè)務(wù)線签财,對于這些通用控件都有需求串慰,那么我們可以將這些內(nèi)容沉降到通用的業(yè)務(wù)層。
3.最上層就是我們的業(yè)務(wù)模塊了唱蒸,業(yè)務(wù)層的模塊應(yīng)該按照模塊化的設(shè)計(jì)思想邦鲫,盡量做到高度的“高內(nèi)聚,低耦合”神汹。
這么做的好處是為以后可能的組件化做準(zhǔn)備庆捺,目前APP業(yè)務(wù)規(guī)模較小,等以后APP業(yè)務(wù)規(guī)模增大屁魏,需要進(jìn)行重構(gòu)做組件化的時(shí)候滔以,在業(yè)務(wù)層加入中間層,進(jìn)行業(yè)務(wù)模塊之間的解耦氓拼,將會(huì)方便很多你画。
目標(biāo):單獨(dú)拎出一個(gè)業(yè)務(wù),不用做過多修改桃漾,然后就能生成一個(gè)新的APP坏匪。這個(gè)就是我們做整體的一個(gè)客戶端的架構(gòu)的目的或者說它的意義。
二.設(shè)計(jì)思想
所有模塊的開發(fā)撬统,包括獨(dú)立于APP的通用層适滓,通用業(yè)務(wù)層,業(yè)務(wù)層恋追,都應(yīng)該遵循模塊化的思想凭迹,做到高度的“高內(nèi)聚,低耦合”苦囱。
實(shí)現(xiàn)模塊化需要注意的點(diǎn):
- 不跨業(yè)務(wù)模塊使用宏嗅绸,在開發(fā)中可以使用宏,但是不能出現(xiàn)全局的自定義宏沿彭,使用的宏只能在當(dāng)前業(yè)務(wù)模塊內(nèi)使用
- 業(yè)務(wù)層不允許出現(xiàn)common組件朽砰,單個(gè)模塊一定要分工明確,功能單一
- 去基類喉刘,單個(gè)業(yè)務(wù)模塊內(nèi)可以有繼承關(guān)系瞧柔,不能有跨模塊的繼承,例如睦裳,所有的Controller都繼承一個(gè)基類造锅。繼承也是一種變相的耦合
三.設(shè)計(jì)模式
關(guān)于設(shè)計(jì)模式的選擇,借鑒MVVM設(shè)計(jì)模式廉邑,將業(yè)務(wù)模塊劃分為Controller+View+Model+ViewModel+Service+Constant六個(gè)部分哥蔚。
- Controller負(fù)責(zé)視圖創(chuàng)建、組合蛛蒙,協(xié)調(diào)邏輯糙箍,事件回調(diào)處理
- View負(fù)責(zé)控件初始化,設(shè)置數(shù)據(jù)牵祟,交互事件代理
- Model模型模塊深夯,分為網(wǎng)絡(luò)數(shù)據(jù),業(yè)務(wù)數(shù)據(jù)诺苹,UI數(shù)據(jù)三種類型
- Service組建網(wǎng)絡(luò)請求
- ViewModel負(fù)責(zé)業(yè)務(wù)邏輯處理咕晋,數(shù)據(jù)增刪改查封裝,線程安全處理收奔,網(wǎng)絡(luò)請求以及數(shù)據(jù)解析
- Constant存放該模塊的一些公用的常量掌呜,例如通知名稱,常量字符串等