MVC是一種使用MVC(View模型-視圖-控制器)
2021-10-10
MVC 是一種使用 MVC(View -View-)設(shè)計(jì)來(lái)創(chuàng)建 Web 應(yīng)用程序的模式:
(模型)代表應(yīng)用程序的核心(如數(shù)據(jù)庫(kù)記錄列表)。
查看顯示數(shù)據(jù)(數(shù)據(jù)庫(kù)記錄)。
(控制器)處理輸入(寫入數(shù)據(jù)庫(kù)記錄)。
MVC 模型還提供對(duì) HTML、CSS 和 HTML 的完全控制。
(模型)是應(yīng)用程序的一部分,用于處理應(yīng)用程序的數(shù)據(jù)邏輯。
通常模型對(duì)象負(fù)責(zé)訪問(wèn)數(shù)據(jù)庫(kù)中的數(shù)據(jù)。
視圖(view)是應(yīng)用程序中處理數(shù)據(jù)顯示的部分。
通常視圖是基于模型數(shù)據(jù)創(chuàng)建的。
(控制器)是應(yīng)用程序中處理用戶交互的部分。
通??刂破髫?fù)責(zé)從視圖中讀取數(shù)據(jù)php高級(jí)程序設(shè)計(jì):模式,框架與測(cè)試,控制用戶輸入,并向模型發(fā)送數(shù)據(jù)。
MVC 分層有助于管理復(fù)雜的應(yīng)用程序,因?yàn)槟梢砸淮螌W⒂谝粋€(gè)方面。例如,您可以專注于視圖設(shè)計(jì)而不依賴于業(yè)務(wù)邏輯。它還使應(yīng)用程序測(cè)試更容易。
MVC 分層還簡(jiǎn)化了組開(kāi)發(fā)。不同的開(kāi)發(fā)人員可以同時(shí)開(kāi)發(fā)視圖、控制器邏輯和業(yè)務(wù)邏輯。
框架和設(shè)計(jì)模式的區(qū)別
很多程序員經(jīng)常把框架模式和設(shè)計(jì)模式混為一談,認(rèn)為MVC是一種設(shè)計(jì)模式。事實(shí)上,它們是完全不同的概念。
框架和設(shè)計(jì)模式這兩個(gè)概念總是容易混淆。事實(shí)上,它們之間還是有區(qū)別的??蚣芡ǔJ谴a重用,設(shè)計(jì)模式是設(shè)計(jì)重用,架構(gòu)介于兩者之間。部分代碼重用,部分設(shè)計(jì)重用,有時(shí)分析可以重用。
軟件生產(chǎn)中的重用分為三個(gè)層次:內(nèi)部重用,即可以在同一個(gè)應(yīng)用程序中公開(kāi)使用的抽象塊;代碼重用,即將通用模塊組合成庫(kù)或工具集,使其可以在多個(gè)應(yīng)用和領(lǐng)域中使用;應(yīng)用程序框架的復(fù)用是為特殊領(lǐng)域提供通用或現(xiàn)成的基礎(chǔ)設(shè)施,以獲得最高級(jí)別的復(fù)用性。
框架和設(shè)計(jì)模式雖然相似,但本質(zhì)上是不同的。設(shè)計(jì)模式是對(duì)在一定環(huán)境中重復(fù)出現(xiàn)的問(wèn)題的描述以及對(duì)問(wèn)題的解決方案。它比框架更抽象;一個(gè)框架可以用代碼表達(dá),也可以直接執(zhí)行或重用。對(duì)于模式,只能使用示例。用代碼表示;
設(shè)計(jì)模式是比框架更小的元素。一個(gè)框架通常包含一個(gè)或多個(gè)設(shè)計(jì)模式。該框架始終針對(duì)特定的應(yīng)用領(lǐng)域,但相同的模式可以應(yīng)用于各種應(yīng)用??梢哉f(shuō),框架就是軟件,設(shè)計(jì)模式就是軟件的知識(shí)。
框架模式有哪些?
MVC、MTV、MVP、CBD、ORM等;
有哪些框架?
C++語(yǔ)言QT、MFC、gtk、Java語(yǔ)言SSH、SSI、PHP語(yǔ)言(MVC模式)、語(yǔ)言(MTV模式)等
有哪些設(shè)計(jì)模式?
工廠模式、適配器模式、策略模式等。
總之:框架是大智慧,用來(lái)劃分軟件設(shè)計(jì);設(shè)計(jì)模式是小技巧,針對(duì)具體問(wèn)題提出解決方案,以提高代碼復(fù)用率,降低耦合度。
基于 Web 的 MVC 在 J2EE 世界中得到了空前的繁榮。幾乎每隔一兩周就會(huì)在 TTS 網(wǎng)站上發(fā)布一個(gè)新的 MVC 框架。更好的 MVC 和舊的。新興的MVC框架包括MVC、JSF等。
其中大部分是知名團(tuán)隊(duì)的作品,也有一些邊緣團(tuán)隊(duì)的作品,也相當(dāng)不錯(cuò),比如,等等,這些框架提供了很好的分層能力。在實(shí)現(xiàn)良好的MVC分離的基礎(chǔ)上,通過(guò)提供一些現(xiàn)成的輔助類庫(kù)也促進(jìn)了生產(chǎn)效率的提升。
MVC特點(diǎn):
優(yōu)勢(shì)
低耦合
視圖層和業(yè)務(wù)層分離,允許改變視圖層代碼而無(wú)需重新編譯模型和控制器代碼。同樣,對(duì)應(yīng)用程序的業(yè)務(wù)流程或業(yè)務(wù)規(guī)則的更改只需要更改 MVC 模型層。由于模型與控制器和視圖分離,因此很容易更改應(yīng)用程序的數(shù)據(jù)層和業(yè)務(wù)規(guī)則。
模型是自包含的,與控制器和視圖分離,因此很容易改變應(yīng)用程序的數(shù)據(jù)層和業(yè)務(wù)規(guī)則。如果將數(shù)據(jù)庫(kù)遷移到LDAP或?qū)?shù)據(jù)源更改為L(zhǎng)DAP,則只需更改模型即可。
一旦模型正確實(shí)現(xiàn),無(wú)論數(shù)據(jù)來(lái)自數(shù)據(jù)庫(kù)還是 LDAP 服務(wù)器,視圖都會(huì)正確顯示它們。由于使用MVC的應(yīng)用程序的三個(gè)組件是相互獨(dú)立的,改變其中一個(gè)不會(huì)影響另外兩個(gè),因此可以基于這種設(shè)計(jì)思想構(gòu)建一個(gè)良好的松耦合組件。
高復(fù)用性
隨著技術(shù)的不斷進(jìn)步,訪問(wèn)應(yīng)用程序的方式也越來(lái)越多。MVC模式允許使用不同風(fēng)格的各種視圖訪問(wèn)同一個(gè)服務(wù)器端代碼,因?yàn)槎鄠€(gè)視圖可以共享一個(gè)模型,其中包括任何WEB(HTTP)瀏覽器或無(wú)線瀏覽器(wap)。
例如,用戶可以通過(guò)電腦或手機(jī)訂購(gòu)某種產(chǎn)品。雖然訂購(gòu)方式不同,但訂購(gòu)產(chǎn)品的加工方式是一樣的。由于模型返回的數(shù)據(jù)沒(méi)有格式化,同一個(gè)組件可以被不同的接口使用。
比如很多數(shù)據(jù)可能用HTML表示,但也可能用WAP表示。這些表示所需的命令是改變視圖層的實(shí)現(xiàn)方式php高級(jí)程序設(shè)計(jì):模式,框架與測(cè)試,而控制層和模型層則不需要改變。由于數(shù)據(jù)和業(yè)務(wù)規(guī)則已經(jīng)與表示層分離,代碼重用可以最大化。該模型還具有狀態(tài)管理和數(shù)據(jù)持久化處理的功能。
低生命周期成本
MVC 減少了開(kāi)發(fā)和維護(hù)用戶界面的技術(shù)含量。
快速部署
使用MVC模型可以大大減少開(kāi)發(fā)時(shí)間。它使程序員(Java 開(kāi)發(fā)人員)能夠?qū)W⒂跇I(yè)務(wù)邏輯,并使界面程序員(HTML 和 JSP 開(kāi)發(fā)人員)能夠?qū)W⒂诒硎尽?/p>
高可維護(hù)性
將視圖層和業(yè)務(wù)邏輯層分離,也使 Web 應(yīng)用程序更易于維護(hù)和修改。
有利的軟件工程管理
由于不同層各司其職,因此每一層的不同應(yīng)用具有一些相同的特點(diǎn),有利于通過(guò)工程和工具對(duì)程序代碼進(jìn)行管理??刂破鬟€提供了一個(gè)好處,就是可以使用控制器連接不同的模型和視圖來(lái)完成用戶的需求,這樣控制器就可以為構(gòu)建應(yīng)用程序提供強(qiáng)大的手段。
給定一些可復(fù)用的模型和視圖,控制器可以根據(jù)用戶的需要選擇模型進(jìn)行處理,然后選擇視圖將處理結(jié)果展示給用戶。
缺點(diǎn)
沒(méi)有明確的定義
完全理解MVC并不容易。MVC的使用需要仔細(xì)規(guī)劃,因?yàn)樗膬?nèi)部原理比較復(fù)雜,所以需要花一些時(shí)間去思考。同時(shí),由于模型和視圖必須嚴(yán)格分離,這也給應(yīng)用調(diào)試帶來(lái)了一定的困難。每個(gè)組件在使用前都需要經(jīng)過(guò)徹底的測(cè)試。
不適合中小型應(yīng)用
花費(fèi)大量時(shí)間將 MVC 應(yīng)用于不是很大的應(yīng)用程序通常會(huì)超過(guò)收益。
增加系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)的復(fù)雜性
對(duì)于簡(jiǎn)單的界面,嚴(yán)格遵循MVC,將模型、視圖和控制器分開(kāi),會(huì)增加結(jié)構(gòu)的復(fù)雜度,可能會(huì)產(chǎn)生過(guò)多的更新操作,降低運(yùn)行效率。
視圖和控制器連接太緊
視圖和控制器彼此分離,但它們是密切相關(guān)的組件。視圖沒(méi)有控制器,其應(yīng)用非常有限,反之亦然,這阻礙了它們的獨(dú)立重用。
查看對(duì)模型數(shù)據(jù)的低效訪問(wèn)
根據(jù)模型操作界面的不同,可能需要多次調(diào)用視圖才能獲得足夠的顯示數(shù)據(jù)。不必要地頻繁訪問(wèn)未更改的數(shù)據(jù)也會(huì)影響操作性能。
一般高級(jí)界面工具或構(gòu)建器不支持模式
適配這些工具來(lái)滿足MVC的需要以及建立單獨(dú)的組件的成本非常高,這會(huì)給MVC的使用帶來(lái)困難。
如何選擇一個(gè)好的框架應(yīng)用到項(xiàng)目中,對(duì)項(xiàng)目的效率和復(fù)用性至關(guān)重要。
報(bào)告/反饋