iOS應(yīng)用層架構(gòu)的定義及CDD詳解
大?。?/span>0.5 MB 人氣: 2017-10-12 需要積分:1
推薦 + 挑錯(cuò) + 收藏(0) + 用戶評(píng)論(0)
標(biāo)簽:iOS(148619)
從2010年開始接觸iOS開發(fā)到現(xiàn)在,折騰過不少App的架構(gòu)。從MVC到MVVM,VIPER,MVP,以及最新的ReactiveCocoa都做過實(shí)戰(zhàn)嘗試,還有其他變種,諸如猿題庫(kù)iOS客戶端架構(gòu)設(shè)計(jì),也做過一些學(xué)習(xí)研究。這些技術(shù)概念如果不熟悉,建議每個(gè)鏈接都點(diǎn)開好好研讀下,不要對(duì)你的大腦太溫柔。在開始架構(gòu)討論之前,再推薦一些其他非常值得一讀的文章:唐巧-被誤解的 MVC 和被神化的 MVVM, Casa Taloyum iOS架構(gòu)系列文章,objc.io架構(gòu)系列文章。1.應(yīng)用層架構(gòu)定義
其實(shí)嚴(yán)格來說,MVC和其他類似概念還算不上一個(gè)完整的架構(gòu)。一個(gè)頗具規(guī)模的App必然會(huì)涉及到分層的設(shè)計(jì),還有模塊化、Hybrid機(jī)制、熱補(bǔ)丁等等。MVC這種更像是個(gè)設(shè)計(jì)模式,解決的只是App分層設(shè)計(jì)當(dāng)中的應(yīng)用層(Applicaiton Layer)組織方式。對(duì)于一些簡(jiǎn)單App來說,可能應(yīng)用層一層就完成了整個(gè)App的架構(gòu),不用擔(dān)心業(yè)務(wù)膨脹對(duì)后期開發(fā)的壓力。這里我介紹一種新的應(yīng)用層架構(gòu)方式,名之為CDD:Context Driven Design。
先明確下我們討論的范疇,什么是一個(gè)App的應(yīng)用層呢?現(xiàn)在不少App都會(huì)做一個(gè)分層的設(shè)計(jì),一般為三層:應(yīng)用層、Service層、Data Access層。每一層再通過面向接口的方式產(chǎn)生依賴。
應(yīng)用層是直接和用戶打交道的部分,也就是我們常常用到的UIViewController,負(fù)責(zé)數(shù)據(jù)的展示,用戶交互的處理,數(shù)據(jù)的采集等等。
Service層位于應(yīng)用層的下面,為應(yīng)用層提供公共的服務(wù)接口,對(duì)應(yīng)用層來說就像是一個(gè)Server,不過API調(diào)用的延遲為0ms,Service層里放哪些代碼做法沒有統(tǒng)一的規(guī)范,一般來說會(huì)包含業(yè)務(wù)數(shù)據(jù)的處理,網(wǎng)絡(luò)接口的調(diào)用,公共系統(tǒng)服務(wù)API封裝(比如GPS定位、相冊(cè)、權(quán)限控制)等等。
Data Access層顧名思義是負(fù)責(zé)處理我們App的基礎(chǔ)數(shù)據(jù),API設(shè)計(jì)規(guī)范一般遵循CRUD。這一層位于Service層的下方,提供數(shù)據(jù)庫(kù)交互所需的API。
這是基礎(chǔ)部分,不同的團(tuán)隊(duì)具體做法又會(huì)有一些差異。比如有些把Data Access層又叫做Model層,有些把網(wǎng)絡(luò)模塊放在Service層,有些則放在Data Access層,有些把部分的業(yè)務(wù)數(shù)據(jù)放到Model里面做成胖Model,有些則堅(jiān)持使用瘦Model,把業(yè)務(wù)代碼放在獨(dú)立的地方統(tǒng)一管理,等等差異不一而足。除了分層還有一些公共模塊的設(shè)計(jì),比如數(shù)據(jù)庫(kù)、網(wǎng)絡(luò)、安全、熱補(bǔ)丁、Hybrid機(jī)制、性能監(jiān)測(cè)模塊、日志模塊等等如何配合分層設(shè)計(jì),這里就不一一展開了。我們今天討論的重點(diǎn)在應(yīng)用層。
首先聲明下,這個(gè)CDD其實(shí)是我很久之前看Android代碼腦洞出來的,剛好解決了我之前組織應(yīng)用層代碼的一個(gè)痛點(diǎn)。做過Android的朋友應(yīng)該都知道,在很多類里都可以通過getContext方法獲取到一個(gè)context,再通過這個(gè)context可以獲取到其他系統(tǒng)資源。當(dāng)時(shí)我第一次了解完這個(gè)context概念的時(shí)候,瞬間產(chǎn)生了一個(gè)這樣的腦洞:

我知道這靈光一閃的腦洞有點(diǎn)大,容我慢慢道來。前面提到應(yīng)用層其實(shí)是在管理一堆UIViewController。拿微信做例子(我真的很喜歡拿微信舉個(gè)栗子),首頁(yè)4個(gè)tab,4個(gè)界面,4個(gè)controller,每個(gè)controller都有很多UI元素,點(diǎn)擊又可以進(jìn)入二級(jí)的controller,各controller可以看成一個(gè)獨(dú)立的模塊,有些簡(jiǎn)單,有些復(fù)雜。比如聊天界面這個(gè)controller就非常非常的復(fù)雜。
非常好我支持^.^
(0) 0%
不好我反對(duì)
(0) 0%
下載地址
iOS應(yīng)用層架構(gòu)的定義及CDD詳解下載
相關(guān)電子資料下載
- iOS17.1可能明天發(fā)布,iOS17.1主要修復(fù)哪些問題? 381
- 華為全新鴻蒙蓄勢(shì)待發(fā) 僅支持鴻蒙內(nèi)核和鴻蒙系統(tǒng)應(yīng)用 719
- 蘋果手機(jī)系統(tǒng)iOS 17遭用戶質(zhì)疑 731
- iPhone12輻射超標(biāo)?蘋果推送iOS 17.1解決此事 750
- 傳華為囤積零部件 目標(biāo)明年智能手機(jī)出貨7000萬部;消息稱 MiOS 僅限國(guó)內(nèi),小米 28208
- 蘋果推送iOS17.0.3,解決iPhone15Pro系列存在機(jī)身過熱 216
- Testin云測(cè)兼容和真機(jī)服務(wù)平臺(tái)中上線iPhone 15系列手機(jī) 208
- 利爾達(dá)推出搭載HooRiiOS的Matter模組 145
- 運(yùn)放參數(shù)解析:輸入偏置電流(Ibias)和失調(diào)電流(Ios) 128
- 昆侖太科發(fā)布支持國(guó)產(chǎn)飛騰騰銳D2000芯片的開源BIOS固件版本 448