iOS项目架构 小谈
生活随笔
收集整理的這篇文章主要介紹了
iOS项目架构 小谈
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
層級(jí)結(jié)構(gòu),自底向上
持久層(File,Realm,SQLite)<==>網(wǎng)絡(luò)層(相信每個(gè)公司都有自己的網(wǎng)絡(luò)層吧)==>業(yè)務(wù)層(ViewModel)==>展示層(View,VC)
持久層
耦合到網(wǎng)絡(luò)層
設(shè)計(jì)要點(diǎn)
持久模型的選擇,我這里選擇了文件,直接緩存了JSON.txt。并且維護(hù)一張表映射到文件,實(shí)現(xiàn)快速獲取,文件超時(shí)刪除等操作。持久層的timeout設(shè)置,網(wǎng)絡(luò)層訪問到這里的時(shí)候,如果超時(shí)立即拋棄緩存網(wǎng)絡(luò)層
耦合到持久層
設(shè)計(jì)要點(diǎn)
網(wǎng)絡(luò)層的設(shè)計(jì)是基于離散式的,即一個(gè)API接口對(duì)于一個(gè)Class。實(shí)現(xiàn)接口復(fù)用,有了為同一個(gè)公司的多個(gè)APP提供APIKit的可能。網(wǎng)絡(luò)層的設(shè)計(jì)是基于數(shù)據(jù)流的。也就是說(shuō),你訂閱了這個(gè)接口,以后這個(gè)接口出現(xiàn)刷新,加載數(shù)據(jù)等,所有的返回及時(shí)發(fā)送給所有訂閱者。一份請(qǐng)求數(shù)據(jù),可以多處訂閱。例如在首頁(yè)加載了N個(gè)接口,在詳情頁(yè)獲取其中某個(gè)接口的返回?cái)?shù)據(jù),這里你不需要知道那個(gè)接口是否加載完成,直接訂閱即可。接口實(shí)例是可reload,可refresh,可nexPage得,具體基于業(yè)務(wù)實(shí)現(xiàn)是有緩存開關(guān)的是可adaptation的。這里可要求過(guò)來(lái)接收數(shù)據(jù)的類型實(shí)現(xiàn)JSONConvertable協(xié)議是可以統(tǒng)一catch一些errors的。業(yè)務(wù)層
業(yè)務(wù)層耦合網(wǎng)絡(luò)層
設(shè)計(jì)要點(diǎn)
這里的業(yè)務(wù)層就抽象成一個(gè)若干個(gè)ViewModelViewModel維護(hù)各種數(shù)據(jù)流,狀態(tài)。部分?jǐn)?shù)據(jù)是要提供給展示層的展示層和業(yè)務(wù)層相互訂閱。展示層
展示層和業(yè)務(wù)層耦合
設(shè)計(jì)要點(diǎn)
View單純的包含View。哈哈這里遞歸了。View也提供事件流,以供和業(yè)務(wù)層進(jìn)行綁定。例如這里的view里有一個(gè)button,點(diǎn)擊button提交數(shù)據(jù)。這個(gè)數(shù)據(jù)肯定在ViewModel里了。所有,view提供一個(gè)buttonClick的信號(hào),ViewModel提供的UploadData的操作。兩者綁定即可。ViewController,主要在這里進(jìn)行業(yè)務(wù)層ViewModel和視圖View的綁定,解綁。轉(zhuǎn)載自: http://fengdeng.github.io/blog/2016/05/24/xiang-mu-jia-gou-xiao-jie-ios/
轉(zhuǎn)載于:https://www.cnblogs.com/Jenaral/p/5616145.html
總結(jié)
以上是生活随笔為你收集整理的iOS项目架构 小谈的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spring 多线程 事务的实际应用场景
- 下一篇: 油猴脚本对web项目的影响