框架模式之 MVC

簡(jiǎn)介

MVC 全稱是 Model - View - Controller,是模型(model)-視圖(view)-控制器(controller)的縮寫。MVC 是一種框架模式而非設(shè)計(jì)模式,GOF 把 MVC 看作是 3 種設(shè)計(jì)模式:觀察者模式、策略模式與組合模式的合體,而核心是觀察者模式。簡(jiǎn)而言之,框架是大智慧,用來(lái)對(duì)軟件設(shè)計(jì)進(jìn)行分工;設(shè)計(jì)模式是小技巧,對(duì)具體問(wèn)題提出解決方案,以提高代碼復(fù)用率,降低耦合度。

設(shè)計(jì)圖

mvc.png

優(yōu)點(diǎn)

由于 MVC 很好的分離了視圖層和業(yè)務(wù)層,所以它具有以下優(yōu)點(diǎn):

  • 耦合性低
  • 開發(fā)速度快
  • 可維護(hù)性高
  • 易于理解

缺點(diǎn)

  • 由于 MVC 的設(shè)計(jì)思想是從 Model 出發(fā),而沒(méi)有考慮到 View 端的復(fù)雜性,這樣導(dǎo)致的問(wèn)題是 Model 難以符合復(fù)雜多變的 View 端變化。導(dǎo)致 Model 的作用很小,而很多 View 層的職責(zé)也轉(zhuǎn)移到了 Controller 層。Controller 變得臃腫不堪。
  • 測(cè)試?yán)щy

關(guān)系

gx.png.png
  • 視圖層(View)
    對(duì)應(yīng)于 xml 布局文件和 java 代碼動(dòng)態(tài) view 部分
  • 控制層(Controller)
    MVC 中 Android 的控制層是由 Activity 來(lái)承擔(dān)的,Activity 本來(lái)主要是作為初始化頁(yè)面,展示數(shù)據(jù)的操作,但是因?yàn)?XML 視圖功能太弱,所以 Activity 既要負(fù)責(zé)視圖的顯示又要加入控制邏輯,承擔(dān)的功能過(guò)多。
  • 模型層(Model)
    針對(duì)業(yè)務(wù)模型,建立的數(shù)據(jù)結(jié)構(gòu)和相關(guān)的類,它主要負(fù)責(zé)網(wǎng)絡(luò)請(qǐng)求,數(shù)據(jù)庫(kù)處理,I/O 的操作。

小結(jié)

  • 具有一定的分層,Model 徹底解耦,Controller 和 View 并沒(méi)有解耦;
  • 層與層之間的交互盡量使用回調(diào)或者去使用消息機(jī)制去完成,盡量避免直接持有;
  • Controller 和 View 在 Android 中無(wú)法做到徹底分離,但在代碼邏輯層面一定要分清;
    業(yè)務(wù)邏輯被放置在 Model 層,能夠更好的復(fù)用和修改增加業(yè)務(wù)。
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容