MVC介紹MVC是一種可以簡(jiǎn)化應(yīng)用程序開(kāi)發(fā)和維護(hù)的設(shè)計(jì)模式。為了實(shí)現(xiàn)這一目的,它將應(yīng)用程序分割到三個(gè)邏輯組件中。 模型(Model)。模型層負(fù)責(zé)應(yīng)用程序的業(yè)務(wù)邏輯。它將封裝訪問(wèn)數(shù)據(jù)庫(kù)方法并提供一個(gè)可以重用的類庫(kù)。通常,在模型中,你將發(fā)現(xiàn)用于數(shù)據(jù)庫(kù)抽象、電子郵件發(fā)送、校驗(yàn)和驗(yàn)證等機(jī)制。 視圖(View)。視圖層通常包括Web設(shè)計(jì)或者模板設(shè)計(jì)等工作。它控制了數(shù)據(jù)的外觀并提供了從用戶收集數(shù)據(jù)的機(jī)制。在視圖中經(jīng)常找到視圖特有的技術(shù),包括HTML、CSS和JavaScript。 控制器(Controller)??刂破鲗訉⑺惺马?xiàng)連接在一起,并且將視圖設(shè)計(jì)和模型功能合并在一起。它負(fù)責(zé)從視圖中收集輸入數(shù)據(jù),并決定程序的執(zhí)行邏輯??刂破鲿?huì)調(diào)用模型的機(jī)制并解析返回的數(shù)據(jù),以便使這些數(shù)據(jù)能夠被視圖所展示。它還負(fù)責(zé)所有應(yīng)用程序的異常控制和流控制。 為什么使用MVC項(xiàng)目選擇MVC開(kāi)發(fā)應(yīng)用程序的首要原因是它提倡的開(kāi)發(fā)工作流。在開(kāi)發(fā)團(tuán)隊(duì)中,MVC提供了有效的合作模式,它將各人的職責(zé)分成為三個(gè)主要的角色。 開(kāi)發(fā)。開(kāi)發(fā)人員是指處理模型的程序員。他們通常擁有與PHP、數(shù)據(jù)庫(kù)管理、算法、架構(gòu)和數(shù)據(jù)校驗(yàn)等方面相關(guān)的技能。這一個(gè)角色通常會(huì)負(fù)責(zé)實(shí)現(xiàn)應(yīng)用程序的編程細(xì)節(jié)(操作)。它們會(huì)提供API,同時(shí)實(shí)施處理數(shù)據(jù)的策略。 設(shè)計(jì)。設(shè)計(jì)人員處理視圖并負(fù)責(zé)實(shí)現(xiàn)應(yīng)用程序的外觀。他們具有如HTML、CSS、JavaScript和圖形設(shè)計(jì)等方面的技能。通常,這一角色負(fù)責(zé)與內(nèi)外部的通信源交互以決定要開(kāi)發(fā)或者增強(qiáng)的應(yīng)用程序的實(shí)現(xiàn)的業(yè)務(wù)規(guī)則。設(shè)計(jì)通常會(huì)導(dǎo)致原型的開(kāi)發(fā),也就是創(chuàng)建能夠顯示理想功能的模型設(shè)計(jì)。 集成。集成工作在于控制器層中,它將設(shè)計(jì)師和開(kāi)發(fā)人員的工作連接在一起。集成人員的經(jīng)驗(yàn)通常比開(kāi)發(fā)人員要少,他們會(huì)負(fù)責(zé)切割靜態(tài)模板并且制作應(yīng)用程序所需的動(dòng)態(tài)區(qū)域。他們還負(fù)責(zé)代理來(lái)自請(qǐng)求源的數(shù)據(jù)。將從表單中獲取請(qǐng)求信息,將這些信息傳遞給模型,解釋結(jié)果,并且將結(jié)果傳遞給視圖。 通過(guò)職責(zé)分工,開(kāi)發(fā)方法的細(xì)節(jié)與開(kāi)發(fā)需求的細(xì)節(jié)分開(kāi)了,這使得創(chuàng)意學(xué)科和技術(shù)學(xué)科能夠更加容易地交互。 典型的工作流在一個(gè)典型的工作流中,首先設(shè)計(jì)師會(huì)根據(jù)現(xiàn)存的業(yè)務(wù)需求以及應(yīng)用程序所要實(shí)現(xiàn)的功能,制作一個(gè)靜態(tài)的、單獨(dú)的原型設(shè)計(jì)。然后設(shè)計(jì)師將設(shè)計(jì)內(nèi)容交給開(kāi)發(fā)人員評(píng)審。 開(kāi)發(fā)人員負(fù)責(zé)確保所有的要求實(shí)現(xiàn)的功能是可行的,并且符合公司的安全和隱私策略。如果開(kāi)發(fā)人員沒(méi)有發(fā)現(xiàn)任何問(wèn)題,他們就會(huì)創(chuàng)建一個(gè)開(kāi)發(fā)計(jì)劃,其中包括一個(gè)API模型,然后再交給集成人員。如果原型出現(xiàn)了問(wèn)題,項(xiàng)目會(huì)回到設(shè)計(jì)人員手中,這一過(guò)程就再次從頭開(kāi)始。 準(zhǔn)備好設(shè)計(jì)原型和API模型之后,集成工作就開(kāi)始了。集成人員將研究原型設(shè)計(jì),并將它轉(zhuǎn)換成模板語(yǔ)言,如普通PHP、Smarty等。這使得設(shè)計(jì)內(nèi)容可以處理動(dòng)態(tài)數(shù)據(jù),并且將設(shè)計(jì)集成到完全由集成人員負(fù)責(zé)的站點(diǎn)URL結(jié)構(gòu)中。然后編寫(xiě)一個(gè)控制器組件,這一組件將請(qǐng)求(來(lái)自于表單、URL參數(shù)、cookie等)在web服務(wù)器和他們需要操作的模型信息之間代理分發(fā)。結(jié)果產(chǎn)生之后,獲取視圖并輸出,并且控制器會(huì)提供所有動(dòng)態(tài)內(nèi)容的值。 最后,當(dāng)API模型完全實(shí)現(xiàn)之后,就可以將應(yīng)用程序交給測(cè)試人員測(cè)試了。如果集成人員根據(jù)規(guī)范編寫(xiě)控制器,并且模型開(kāi)發(fā)人員遵循API編寫(xiě)代碼,那么一切都會(huì)順利進(jìn)行。(工作流是自我的理解,不代表實(shí)際情況) 還有什么好處MVC架構(gòu)除了可以在團(tuán)隊(duì)成員之間分配職責(zé)之外,它還提供了幾個(gè)非常關(guān)鍵的功能。 其中一個(gè)是只要表現(xiàn)層的設(shè)計(jì)不破壞與控制器的約定,它就允許在任何時(shí)間修改和更新表現(xiàn)層的設(shè)計(jì)。這意味著可以很容易地編輯副本或者變化主題,而不用改變應(yīng)用程序的操作方法或者整理大量的PHP代碼。 MVC架構(gòu)還提供了一個(gè)很有用的文件結(jié)構(gòu)分類方法。它為模型、視圖和控制器提供了單獨(dú)的文件,這一特性會(huì)減少代碼沖突,并且會(huì)節(jié)省原本用于合并版本控制系統(tǒng)中的修改時(shí)間(這句話不理解)。 摘自:PHP程序設(shè)計(jì) 模式、框架與測(cè)試 |
|
來(lái)自: 昵稱10504424 > 《架構(gòu)設(shè)計(jì)》