首先舍悯,App搭建要遵循的架構(gòu)原則:易讀性、易維護(hù)性睡雇、易擴(kuò)展性萌衬。其次?根據(jù)產(chǎn)品需求和設(shè)計(jì)圖,腦中先建立一個(gè)產(chǎn)品架構(gòu)它抱,
不同類型的產(chǎn)品秕豫,技術(shù)選型也有所不同,通常我會(huì)選擇一些當(dāng)下比較熱門抗愁、好用的第三方框架馁蒂。例如:YYKit?
常見的分層架構(gòu):視圖層、業(yè)務(wù)層蜘腌、網(wǎng)絡(luò)層沫屡、數(shù)據(jù)層。
好架構(gòu)的前提:
有嚴(yán)格的代碼規(guī)范撮珠,結(jié)構(gòu)目錄清晰沮脖,功能模塊分類明確
注釋統(tǒng)一明確,有一致規(guī)范
避免復(fù)雜的依賴關(guān)系芯急,確保代碼的高封裝性和高復(fù)用性勺届,減少冗余代碼
沒(méi)有橫向依賴,盡可能少的跨層訪問(wèn)
對(duì)業(yè)務(wù)方該限制的地方有限制娶耍,該靈活的地方要給業(yè)務(wù)方創(chuàng)造靈活實(shí)現(xiàn)的條件
易測(cè)試免姿,易拓展
接口少,接口參數(shù)少
低內(nèi)存榕酒,高性能
提高模塊化程度胚膊,增加組件粒度
項(xiàng)目目錄結(jié)構(gòu):
1.應(yīng)用入口(APPDelegate)
AppDelegate是應(yīng)用的代理,應(yīng)用級(jí)的事件都委托它處理想鹰,包含啟動(dòng)退出紊婉、推送等事件,以及IM辑舷、支付等第三方的回調(diào)喻犁,這使得AppDelegate內(nèi)代碼龐大,錯(cuò)綜復(fù)雜,十分不利于閱讀和維護(hù)肢础,因此可以新增了一個(gè)AppDelegate+AppService類別还栓,用來(lái)處理生命周期之外的業(yè)務(wù),AppDelegate作為事件入口传轰,具體實(shí)現(xiàn)直接調(diào)用類別里的方法蝙云,只為更清晰。
2.功能模塊(Modules) 遵循高內(nèi)聚 低耦合的思想
Modules包含了應(yīng)用內(nèi)的功能模塊 ,每個(gè)模塊內(nèi)使用的是MVC模式路召,一般包含Model、View波材、Controller這三個(gè)文件夾股淡,根據(jù)需求或者業(yè)務(wù)邏輯的復(fù)雜度改為MVVM模式 感覺(jué)這個(gè)不是一成不變的
3.管理模塊(Manager)
Manager的定義是全局基礎(chǔ)服務(wù),通常使用類方法或者單例來(lái)實(shí)現(xiàn)廷区,主要包含對(duì)應(yīng)用唯灵、用戶的管理和服務(wù),例如網(wǎng)絡(luò)狀態(tài)監(jiān)聽隙轻,廣告頁(yè)應(yīng)用介紹頁(yè)等埠帕;用戶快速登錄退出操作以及登錄狀態(tài)的獲取等。
4.工具類(Utilities)
Utils文件夾內(nèi)主要包含全局通用工具玖绿,來(lái)源于對(duì)三方框架的二次封裝敛瓷,或是自己寫的工具類。
5.基類(Base)
Base文件夾用來(lái)存放項(xiàng)目的基類斑匪,基類作用包含一些定制化的內(nèi)容呐籽,例如頁(yè)面樣式,空數(shù)據(jù)頁(yè)面等蚀瘸,使用基類來(lái)實(shí)現(xiàn)狡蝶,可以統(tǒng)一控制,利于維護(hù)贮勃,減少冗余贪惹。
6.分類(Category)
對(duì)系統(tǒng)類、自定義類增加的類別都放在這里寂嘉。
7.宏定義奏瞬、頭文件(Define)
全局宏顧名思義是定義了一些全局通用宏、枚舉垫释。
一般是這幾種:工具宏定義(UtilsMacros):比如獲取屏幕寬高丝格,系統(tǒng)版本,顏色賦值棵譬,數(shù)據(jù)類型驗(yàn)證等显蝌;
接口宏定義(URLMacros):定義服務(wù)器接口地址以及環(huán)境開關(guān);
枚舉(Enumerate):全局的枚舉
8.資源文件(Resource)
主要是各種文件,json曼尊、xml酬诀、dat、圖片等骆撇。
9.第三方庫(kù)(ThridParty)
第三方文件夾放一些第三方的類庫(kù)和對(duì)第三方封裝瞒御,比如第三方登錄、支付神郊、IM等肴裙。
10.Pods(管理第三方庫(kù))
包管理工具,方便我們更新管理第三方庫(kù)