小程序開(kāi)發(fā)后臺(tái)管理端使用MVC架構(gòu)的好處淺析,小程序開(kāi)發(fā)后臺(tái)管理使用MVC有哪些好處?我們首先對(duì)MVC框架做一個(gè)簡(jiǎn)單的了解,MVC(Model-View-Controller)是一種架構(gòu)模式,也就是“模型-視圖-控制器”模式。小程序開(kāi)發(fā)公司提醒MVC也用于系統(tǒng)的關(guān)注點(diǎn)分離方面,把系統(tǒng)分為模型(Model) .視圖(View)和控制器(Controller)3個(gè)模塊,這些模塊共同作用,向用戶(hù)提供交互的支持。在分解時(shí),3個(gè)模塊各自維持一個(gè)關(guān)注點(diǎn),實(shí)現(xiàn)業(yè)務(wù)邏輯代碼和視圖展示代碼的分離。MVC架構(gòu)中的3個(gè)模塊的定義如下:
·模型(Model) :負(fù)責(zé)描述問(wèn)題和解決問(wèn)題。
·視圖(View) :負(fù)責(zé)在UI中渲染模型,并將信息呈現(xiàn)給用戶(hù)。
·控制器(Controller) :接收和處理視圖傳入的用戶(hù)交互信息,根據(jù)交互的命令修改模型。
小程序開(kāi)發(fā)使用MVC框架在理解MVC架構(gòu)以前,首先要明確數(shù)據(jù)和視圖的概念。模型以數(shù)據(jù)的形式存儲(chǔ)在數(shù)據(jù)庫(kù)中。數(shù)據(jù)是不可視的,也就是說(shuō)數(shù)據(jù)是不能直接看到的,在UI界面看到的不是數(shù)據(jù)本身而是展示數(shù)據(jù)的視圖,并且同一個(gè)數(shù)據(jù)可以使用不同的視圖渲染出來(lái)。以電子表格軟件為例,數(shù)據(jù)和視圖的關(guān)系如圖3.11所示。
模型和視圖分離意味著一個(gè)模型可以擁有多個(gè)視圖,使用多個(gè)視圖是源于用戶(hù)的需求,用戶(hù)需要從不同的視角查看數(shù)據(jù),就像在電子表格里可以通過(guò)表格視圖或曲線視圖查看數(shù)據(jù)一樣。
模型可以擁有多個(gè)視圖,因此產(chǎn)生了模型選擇的問(wèn)題,雖然沒(méi)有強(qiáng)制規(guī)定,但在MVC的實(shí)現(xiàn)中選擇視圖的任務(wù)一般是由控制器完成的。控制器在響應(yīng)視圖的輸入時(shí)會(huì)選擇合適的視圖,它在MVC中起到中樞的作用。MVC的結(jié)構(gòu)如圖3.12所示。
在MVC中,控制器起著協(xié)調(diào)的作用,但控制器并不涉及業(yè)務(wù)邏輯代碼,只是將用戶(hù)的指令翻譯成模型需要執(zhí)行的動(dòng)作,而實(shí)際承擔(dān)業(yè)務(wù)邏輯的是模型。事實(shí)上,通過(guò)視圖直接獲取模型對(duì)象也不是一個(gè)好方法。在稍微復(fù)雜的系統(tǒng)中,MVC會(huì)和其他架構(gòu)一起使用,協(xié)同工作。模型僅僅是對(duì)描述業(yè)務(wù)邏輯對(duì)象的一個(gè)快照或映射,真正的業(yè)務(wù)邏輯模型會(huì)放在一個(gè)更加獨(dú)立的模塊中,而MVC只是用于與用戶(hù)交互的架構(gòu)模式。
MVC是Xerox PARC在20世紀(jì)80年代為編程語(yǔ)言Smalltalk提出的框架,至今都是作為Web程序的首選模式。當(dāng)然MVC也有缺點(diǎn)。例如,對(duì)于關(guān)注點(diǎn)如何分離沒(méi)有嚴(yán)格的定義,從而造成業(yè)務(wù)邏輯代碼的泄漏,以及視圖對(duì)模型的過(guò)度依賴(lài),視圖與控制器的聯(lián)系過(guò)于緊密等。為了克服這些缺點(diǎn),MVC在演進(jìn)過(guò)程中發(fā)展出了多個(gè)變種,比如使用事件驅(qū)動(dòng)的MVP (Model View Presenter)模式。
在MVP中,展示器(Presenter)視圖和控制器進(jìn)行了進(jìn)一步分離,并且展示器和具體的視圖不再直接關(guān)聯(lián),它們通過(guò)預(yù)定的接口相互通信,從而使視圖和展示器真正分離,進(jìn)一步優(yōu)化了視圖的可替換性。MVP也支持展示器的單獨(dú)測(cè)試。MVP的結(jié)構(gòu)如圖3.13所示。
MVP確實(shí)解決了MVC的部分缺點(diǎn),但是MVP的代碼更加復(fù)雜,致使展示器的代碼過(guò)度膨脹。目前被大量使用的仍然是MVC。主流的編程框架都針對(duì)MVC的缺點(diǎn)進(jìn)行了改進(jìn),如Spring MVC、ASP.NET MVC等都提供了“約定式編程”,也就是約定大于配置的契約式編程的支持,極大地簡(jiǎn)化了使用MVC進(jìn)行開(kāi)發(fā)的復(fù)雜度,也避免了視圖和控制器過(guò)度耦合的缺點(diǎn)。好了,
小程序開(kāi)發(fā)公司本文關(guān)于“小程序開(kāi)發(fā)后臺(tái)管理端使用MVC架構(gòu)的好處淺析”開(kāi)發(fā)經(jīng)驗(yàn)就分享到這里,謝謝關(guān)注,博納網(wǎng)絡(luò)編輯整理。