iOS基于MVC的項目重構(gòu)總結(jié)

iOS中的MVC和MVP

Cocoa版本的MVC

Cocoa版本的MVC
根據(jù)官網(wǎng)的描述,Cocoa中的MVC是這樣的
cocoa版MVC.png
- model objects Encapulate Data and Basic Behavious
- View Objects Present Informaiton to the User
- Controller Objects Tie The Model to the View

C 和P的差別

通過搜索引擎末盔,發(fā)現(xiàn)其實MVP有兩種
1.Passive View
2.Supervising Controller

網(wǎng)上絕到多數(shù)部分談?wù)揗VP的文章談?wù)摰钠鋵嵍际荘assive View偎行。這里放上一張Passive View的示意圖

MVP的Passive View的示意圖.png

簡而言之.MVP就是view驅(qū)動的,View層持有對應(yīng)Presenter的引用剂陡,View上的交互事件首先會調(diào)用Presenter提供的接口,人后Presenter調(diào)用Model提供的方法取得數(shù)據(jù),最后presenter將取得的數(shù)據(jù)傳遞到View上展示
MVC則是由controller驅(qū)動的酸钦,controller持有的view菜秦,并相應(yīng)view上的交互事件甜害,根據(jù)交互調(diào)用不同的Model方法取得反饋數(shù)據(jù),在將數(shù)據(jù)傳遞到view展示球昨。

就我個人而言尔店,我的理解是。MVP是用戶視角主慰,所見即View嚣州,MVC是程序員視角,:I control everyone.
理解MVC和MVP的差別困惑的地方在于共螺。,UIViewController到底是屬于C(P)層還是V層呢?下面將分別具體分析一下這兩種觀點

  • 觀點一该肴,uiview controller的歸屬-->view
    如果把UIViewController視為V層,即上面MVP示意圖中的Passive View,那么UIViewController將只負(fù)責(zé)View布局相關(guān)邏輯,不涉及任何與Model層的交互!!

所有的業(yè)務(wù)邏輯交互通過UIViewController持有的Presenter與Model間的調(diào)用來完成

觀點二:UIViewController的歸屬--->Controller

那如果把UIViewController視為C層,從MVC設(shè)計理念上來說,C層不會負(fù)責(zé)具體View的布局及展示邏輯,但是由于iOS中UIViewController的特殊設(shè)計,導(dǎo)致很多開發(fā)者直接就在UIViewController包含了很多具體布局相關(guān)的代碼,更可怕的情況是不止是View的初始化,包括網(wǎng)絡(luò)請求及具體業(yè)務(wù)處理也被包含到UIViewController中,這也許就是有人戲稱MVC為:MassiveViewController的原因

本次基于MVC的項目重構(gòu)步驟

思考要解決的問題
回到項目重構(gòu)的問題上來,我認(rèn)為項目重構(gòu)要想清楚的問題:
1藐不,項目層級如何劃分的匀哄。
2,大的業(yè)務(wù)場景有哪些佳吞?
3拱雏,將UIView Controller歸類為View還是Controller
4,誰來負(fù)責(zé)網(wǎng)絡(luò)請求底扳,Model還是Controller铸抑?
5,從Model中取得數(shù)據(jù)后Controller怎么把數(shù)據(jù)傳遞給View去展示衷模?按照view層級主機遞增鹊汛?是否需要使用View Model
6.Model的生命周期怎么控制蒲赂?(全局和私有Model的劃分)
7,View層級結(jié)構(gòu)越來越深時刁憋,怎么傳遞用戶的交互操作滥嘴?(毫無疑問是NSNotification)

UIview Controller的劃分

本次重構(gòu)中還是UIview Controller歸類為C層,但是為了將UIview Controller徹底和UIview分離開至耻。命名上我們直接使用XXXController若皱。我們對每一個XXXController設(shè)計了一個對應(yīng)的名為的XXXContatinerView的UIView對象。所有的view布局都會在這個XXXControllerView中完成尘颓。

屏幕截圖.jpg
業(yè)務(wù)場景劃分

由于之前趕進度開發(fā),沒有做具體的功能拆分.本次重構(gòu)之前使用了StartUML繪制了主要場景下的UML圖,包括類圖,時序圖,流程圖
強烈推薦新項目正式編碼之前就完成這一步,并由前后端技術(shù)負(fù)責(zé)人主持進行UML評審.所有涉及到的業(yè)務(wù)Model的property以及public方法,所有DataInfo類的屬性,甚至所有的Controller都會在繪制UML的過程中產(chǎn)出.當(dāng)然,要想繪制所有場景下的UML圖可能耗時比較久,一般來說只要繪制出主要交互場景即可.

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末走触,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子疤苹,更是在濱河造成了極大的恐慌互广,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,755評論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件卧土,死亡現(xiàn)場離奇詭異惫皱,居然都是意外死亡,警方通過查閱死者的電腦和手機尤莺,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,305評論 3 395
  • 文/潘曉璐 我一進店門旅敷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人缝裁,你說我怎么就攤上這事扫皱。” “怎么了捷绑?”我有些...
    開封第一講書人閱讀 165,138評論 0 355
  • 文/不壞的土叔 我叫張陵韩脑,是天一觀的道長。 經(jīng)常有香客問我粹污,道長段多,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,791評論 1 295
  • 正文 為了忘掉前任壮吩,我火速辦了婚禮进苍,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘鸭叙。我一直安慰自己觉啊,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,794評論 6 392
  • 文/花漫 我一把揭開白布沈贝。 她就那樣靜靜地躺著杠人,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上嗡善,一...
    開封第一講書人閱讀 51,631評論 1 305
  • 那天辑莫,我揣著相機與錄音,去河邊找鬼罩引。 笑死各吨,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的袁铐。 我是一名探鬼主播揭蜒,決...
    沈念sama閱讀 40,362評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼剔桨!你這毒婦竟也來了忌锯?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,264評論 0 276
  • 序言:老撾萬榮一對情侶失蹤领炫,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后张咳,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體帝洪,經(jīng)...
    沈念sama閱讀 45,724評論 1 315
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,900評論 3 336
  • 正文 我和宋清朗相戀三年脚猾,在試婚紗的時候發(fā)現(xiàn)自己被綠了葱峡。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 40,040評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡龙助,死狀恐怖砰奕,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情提鸟,我是刑警寧澤军援,帶...
    沈念sama閱讀 35,742評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站称勋,受9級特大地震影響胸哥,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜赡鲜,卻給世界環(huán)境...
    茶點故事閱讀 41,364評論 3 330
  • 文/蒙蒙 一空厌、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧银酬,春花似錦嘲更、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,944評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至,卻和暖如春北发,著一層夾襖步出監(jiān)牢的瞬間纹因,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,060評論 1 270
  • 我被黑心中介騙來泰國打工琳拨, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留瞭恰,地道東北人。 一個月前我還...
    沈念sama閱讀 48,247評論 3 371
  • 正文 我出身青樓狱庇,卻偏偏與公主長得像惊畏,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子密任,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,979評論 2 355

推薦閱讀更多精彩內(nèi)容