My App 之 MVC 變種模式

在App 文件劃分的時候,實際上已經(jīng)考慮好我們的基本架構(gòu)是怎樣的逸尖,整體來說是 MVC 或者說MVC 的變種刁标,整體來說還是根據(jù)項目的的大小和具體需求來定。而我個人最近也在想這塊的問題险污,特此一步一步理一下。

MVC (一)
MVC (一)
  • Controller : 干了超多事情, 各種事件
  • View: 呈現(xiàn)視圖事件
  • Model:數(shù)據(jù)的Model 化
  • Other: 管理類以及一些工具

此時如果業(yè)務(wù)一下子復(fù)雜之后富岳,Controller 里面承擔的工具確實會太多了蛔糯,會太臃腫啦,至少維護起來是尷尬的窖式,所以此處相對來說適用于小型項目蚁飒,項目大一點就要將其 Controller 里的部分抽取出來。


MVC (二)
MVC (二)

此處相對于 MVC(一) 來說萝喘,就是將 請求事件單獨再抽離出來淮逻,讓 Contoller 只要通過一個回調(diào)的形式請求數(shù)據(jù),然后達到 輕 Controller 的目的阁簸,我認為相對來說這又進步的爬早。


MVC (三)
MVC (三)
  • Controller : 各種邏輯事件和跳轉(zhuǎn)
  • View: 需要呈現(xiàn)的視圖
  • ViewModel: 數(shù)據(jù)的請求
  • Api: 網(wǎng)絡(luò)請求的配置
  • Model:數(shù)據(jù)的Model 化
  • Other: 管理類以及一些工具

這是我們之前嘗試過的一種另類的 MVVM 變種類型,就是 ViewModel 不僅充當請求的處理還有部分代理的實現(xiàn):

  • 類似 UITableView的代理强窖,方便之處就是類似 UITableView 中很多代理事件直接在其中實現(xiàn)了凸椿,無需再返回到ViewController 中去處理。
  • 像 UITableView 中的 Cell 和 HeaderView 直接在 ViewModel 中處理
  • 以及類似空頁面的代理也可以直接放在 ViewModel 中翅溺,這樣就讓 ViewModel 在有些時候成為 列表頁面的擴展類的感覺脑漫,但確實很方便。

然而最大的問題就是咙崎,可能ViewModel 和 ViewController 中里面實現(xiàn)是事件類型不統(tǒng)一优幸。
例如:

  • 跳轉(zhuǎn)事件即出現(xiàn)在 ViewModel 中,也可能出現(xiàn)在 Controller 里褪猛。
  • 部分自定義View 即直接在 ViewController 中呈現(xiàn)网杆,也可能在 ViewModel 中呈現(xiàn)。

總的說來伊滋,就是相同的事件沒能在同一個地方處理弄抬,顯得有點亂票罐,不利于后期的開發(fā)和維護弄屡。
MVC (四) 就是為了適當?shù)慕鉀Q這些問題而產(chǎn)生的好唯。


MVC (四)
MVC (四)
  • Controller : 可以說主要用于跳轉(zhuǎn)事件
  • View: 更新和呈現(xiàn)視圖,所有視圖都在整個里面筒主,相當于 self.view关噪。
  • ViewModel: 數(shù)據(jù)的請求鸟蟹,以及部分邏輯事件
  • Api: 網(wǎng)絡(luò)請求的配置
  • Model:數(shù)據(jù)的Model 化(轉(zhuǎn)化)
  • Other: 管理類以及一些工具

這是我們組長按照他的思路逐一實踐出來,雖說不是很完美使兔,暫時來說還是適用我們項目的建钥。

注意此處的 View 是相當于 ViewController 中的 self.view 的,所有的視圖都以其 SubView 呈現(xiàn)虐沥,這樣也方便后期的任意添加 SubView, 當然此處很多 SubView 是自定義的熊经,需要再單獨抽離出來的。

當然它也是有一些問題的欲险,例如最大的問題就是 可能 View 中會比較臃腫奈搜,里面的事件比較多


實際上盯荤,我在想后兩種應(yīng)該屬于 MVVM 的變種,但是又有點不恰當焕盟,不知道怎么命名秋秤,但無論如何都是以 MVC 轉(zhuǎn)換過來的,所以暫且這么歸類脚翘。
至于具體項目用哪一個架構(gòu)模式呢灼卢?我個人認為中小型項目是侵向第二種模式的,但我們現(xiàn)在的項目確是適用 第四種模式的来农,雖說第四種模式實踐的還不多...
另外真心覺的架構(gòu)模式這塊要看自己項目的業(yè)務(wù)邏輯和大小的鞋真,繼續(xù)發(fā)現(xiàn)中...
如有朋友對這塊有好的意見和想法,歡迎一起探討沃于!

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末涩咖,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子繁莹,更是在濱河造成了極大的恐慌檩互,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,635評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件咨演,死亡現(xiàn)場離奇詭異闸昨,居然都是意外死亡,警方通過查閱死者的電腦和手機薄风,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,543評論 3 399
  • 文/潘曉璐 我一進店門饵较,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人遭赂,你說我怎么就攤上這事循诉。” “怎么了嵌牺?”我有些...
    開封第一講書人閱讀 168,083評論 0 360
  • 文/不壞的土叔 我叫張陵打洼,是天一觀的道長龄糊。 經(jīng)常有香客問我,道長募疮,這世上最難降的妖魔是什么炫惩? 我笑而不...
    開封第一講書人閱讀 59,640評論 1 296
  • 正文 為了忘掉前任,我火速辦了婚禮阿浓,結(jié)果婚禮上他嚷,老公的妹妹穿的比我還像新娘。我一直安慰自己芭毙,他們只是感情好筋蓖,可當我...
    茶點故事閱讀 68,640評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著退敦,像睡著了一般粘咖。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上侈百,一...
    開封第一講書人閱讀 52,262評論 1 308
  • 那天瓮下,我揣著相機與錄音,去河邊找鬼钝域。 笑死讽坏,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的例证。 我是一名探鬼主播路呜,決...
    沈念sama閱讀 40,833評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼织咧!你這毒婦竟也來了胀葱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,736評論 0 276
  • 序言:老撾萬榮一對情侶失蹤笙蒙,失蹤者是張志新(化名)和其女友劉穎巡社,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體手趣,經(jīng)...
    沈念sama閱讀 46,280評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡晌该,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,369評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了绿渣。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片朝群。...
    茶點故事閱讀 40,503評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖中符,靈堂內(nèi)的尸體忽然破棺而出姜胖,到底是詐尸還是另有隱情,我是刑警寧澤淀散,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布右莱,位于F島的核電站蚜锨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏慢蜓。R本人自食惡果不足惜亚再,卻給世界環(huán)境...
    茶點故事閱讀 41,870評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望晨抡。 院中可真熱鬧氛悬,春花似錦、人聲如沸耘柱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,340評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽调煎。三九已至镜遣,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間士袄,已是汗流浹背烈涮。 一陣腳步聲響...
    開封第一講書人閱讀 33,460評論 1 272
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留窖剑,地道東北人。 一個月前我還...
    沈念sama閱讀 48,909評論 3 376
  • 正文 我出身青樓戈稿,卻偏偏與公主長得像西土,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子鞍盗,可洞房花燭夜當晚...
    茶點故事閱讀 45,512評論 2 359

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