有時候會聽人說,每個項目的架構(gòu)設(shè)計都不一樣伏伐,但我想說 相似的項目 架構(gòu)是可以相似的宠进,
今天我只想說說我自己開發(fā)中,整個項目的設(shè)計藐翎。僅供大家參考材蹬,如果說的有不足的 ,也請大家提出吝镣,共同進(jìn)步堤器。??
現(xiàn)在的架構(gòu)設(shè)計一般是 MVC,MVP末贾,MVVM闸溃,VIPER,雖然知道 他們是什么,但是在實際項目里 不能完全按照這些比葫蘆畫瓢拱撵,有些配置呀辉川,網(wǎng)絡(luò)請求呀,不同項目之間的通用類還是沒有說明拴测。
demo
一 乓旗,不用設(shè)計
剛開始做項目的時候,連model 都不會用昼扛,數(shù)據(jù)操作 全部 用NSdictionary 寸齐,導(dǎo)致 里面很亂欲诺,改個數(shù)據(jù)也特別的麻煩,找數(shù)據(jù) 還要撥開 好幾層渺鹦;
而且 邏輯扰法,網(wǎng)絡(luò)請求 都沒有封裝 全部放在viewController 里。不同viewController 下相似的邏輯毅厚,代碼全是重復(fù)的塞颁。導(dǎo)致ViewContrller 里很亂 很雜,找問題的時候 也不容易定位吸耿,哈哈祠锣,不知道大家有過類似的情況沒!
二咽安,MVC
慢慢的學(xué)會了用MVC伴网,以為整個項目的Model 都要放到Model 文件夾下,項目所有的Controller 都要放到Controller 文件夾下妆棒,項目所有的View 都放到View 文件夾下澡腾,當(dāng)項目小的時候還可以。項目大了的話糕珊,Controller 动分,Model ,View 會越來越大红选,找某個Controller 對應(yīng)的View 的時候 也特別難澜公,特別是以前開發(fā)的人員離職了,或者是自己很久以前寫的代碼的時候喇肋,就更難了坟乾。
三, MVVM + 三層架構(gòu)
慢慢的又學(xué)了 MVVM苟蹈,三層架構(gòu)(界面層糊渊、業(yè)務(wù)邏輯層右核、數(shù)據(jù)訪問層)慧脱。因為實際項目中都是比較大的,所以我分模塊劃分贺喝,如 Home 模塊 又分為 Controller,View,Model,Logic(邏輯層),API(網(wǎng)絡(luò)請求層)菱鸥。
Logic(業(yè)務(wù)邏輯層):其目的就是為了給Controller 減負(fù)。把一些邏輯稍微復(fù)雜躏鱼,或者可以共用的邏輯氮采,放在此處。比如購物車商品中 實際價錢的計算染苛。單獨(dú)封裝 會邏輯更清晰鹊漠。
API(網(wǎng)絡(luò)請求層):大家眾所周知 項目中的網(wǎng)絡(luò)請求是很多的主到,一般你們都放到哪里呢? Controller ? ,ViewModel 躯概? Model 層登钥? 我習(xí)慣單獨(dú)建個文件去進(jìn)行網(wǎng)絡(luò)請求,因為 網(wǎng)絡(luò)請求后 還會做處理娶靡,比如 網(wǎng)絡(luò)請求的都是json, 要把對應(yīng)的json 轉(zhuǎn)成 我們所需要的Model 牧牢。
四,我的最終版 ( MVVM + 三層架構(gòu) + 其他 )
Global:但是 項目中 還有一些其他的東西姿锭,比如用戶登錄后塔鳍,要記錄用戶的信息,而且 很多地方都要用到這個用戶信息呻此,那怎么辦呢轮纫?他不屬于任何一個module ,那就放到最外層焚鲜。
Util:一些通用的工具類
五. 項目數(shù)據(jù)傳遞流程
當(dāng)然 Cocoapods 是必不可少的蜡感,這個我就不再贅述。
有不同的見解請留言恃泪。
有感觸的好貼:http://www.reibang.com/p/15e5b83ab70e