MVC设计模式学习总结
生活随笔
收集整理的這篇文章主要介紹了
MVC设计模式学习总结
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
隨著Web應(yīng)用的商業(yè)邏輯包含逐漸復(fù)雜的公式分析計(jì)算、決策支持等,使客戶機(jī)越
來(lái)越不堪重負(fù),因此將系統(tǒng)的商業(yè)分離出來(lái)。單獨(dú)形成一部分,這樣三層結(jié)構(gòu)產(chǎn)生了。
其中‘層’是邏輯上的劃分。
三層體系結(jié)構(gòu)是將整個(gè)系統(tǒng)劃分為如圖2.1所示的結(jié)構(gòu)[3]
(1)表現(xiàn)層(Presentation layer):包含表示代碼、用戶交互GUI、數(shù)據(jù)驗(yàn)證。
該層用于向客戶端用戶提供GUI交互,它允許用戶在顯示系統(tǒng)中輸入和編輯數(shù)據(jù),同時(shí)
系統(tǒng)提供數(shù)據(jù)驗(yàn)證功能。
(2)業(yè)務(wù)邏輯層(Business layer):包含業(yè)務(wù)規(guī)則處理代碼,即程序中與業(yè)務(wù)
相關(guān)專業(yè)算法、業(yè)務(wù)政策等等。該層用于執(zhí)行業(yè)務(wù)流程和制訂數(shù)據(jù)的業(yè)務(wù)規(guī)則。業(yè)務(wù)邏
輯層主要面向業(yè)務(wù)應(yīng)用,為表示層提供業(yè)務(wù)服務(wù)。
(3)數(shù)據(jù)持久層(Persistence layer):包含數(shù)據(jù)處理代碼和數(shù)據(jù)存儲(chǔ)代碼。數(shù)
據(jù)持久層主要包括數(shù)據(jù)存取服務(wù),負(fù)責(zé)與數(shù)據(jù)庫(kù)管理系統(tǒng)(如數(shù)據(jù)庫(kù))之間的通信。
三個(gè)層次的每一層在處理程序上有各自明確的任務(wù),在功能實(shí)現(xiàn)上有清晰的區(qū)分,
各層與其余層分離,但各層之間存有通信接口。
采用三層軟件設(shè)計(jì)架構(gòu)后,軟件系統(tǒng)在可擴(kuò)展性和可復(fù)用性方面得到極大提高,在
資源分配策略設(shè)計(jì)合理運(yùn)用的同時(shí),軟件的性能指標(biāo)也得到提升,系統(tǒng)的安全性和易管東北
理性也得到改善。
三層體系結(jié)構(gòu)對(duì)Web應(yīng)用的軟件架構(gòu)產(chǎn)生很大影響,促進(jìn)了基于組件的設(shè)計(jì)思想,
產(chǎn)生了許多開發(fā)Web層次框架的實(shí)現(xiàn)技術(shù)。較之兩級(jí)結(jié)構(gòu)來(lái)說,三層結(jié)構(gòu)修改和維護(hù)上
更加方便。目前開發(fā)B/S結(jié)構(gòu)的Web應(yīng)用系統(tǒng)廣泛采用這種三層體系結(jié)構(gòu)。
設(shè)計(jì)模式起源:
1994 年,由 Erich Gamma,Richard Helm,Ralph Johnson 和 John Vlissides(即所謂的“四人幫’,GoF:Gang of Four)合作的以《設(shè)計(jì)模式:可復(fù)用的面向?qū)ο筌浖幕驹怼窞轭}目的書藉出版了。這本書解釋了模式的用處,同時(shí)也使得設(shè)計(jì)模式得到廣泛普及。在書中,他們四人記錄了他們長(zhǎng)期工作中發(fā)現(xiàn)的經(jīng)典 23 個(gè)設(shè)計(jì)模式。
IoC模式
IoC 模式是 Apach Avalon 項(xiàng)目創(chuàng)始人之一 Stefano Mazzocchi 提出的一種代碼調(diào)用模式,后被 MartinFowlcr 改名為 Dependency Injection(依賴注入),也就是將類和類,方法和方法之間的關(guān)系通過第三方(如配置文件)進(jìn)行“注入”,不需要類或者方法自己去解決彼此間的調(diào)用關(guān)系。 IoC(Inversion of Control, 控制反轉(zhuǎn)), 是一種用來(lái)解決組件(也可以是簡(jiǎn)單的 Java類)之間依賴關(guān)系、配置及生命周期的設(shè)計(jì)模式,它可以解決模塊間的耦合問題。IoC模式它是把組件之間的依賴關(guān)系提取(反轉(zhuǎn))出來(lái),由容器來(lái)具體配置。這樣,各個(gè)組件之間就不存在代碼關(guān)聯(lián),解決了調(diào)用方與被調(diào)用方之間的關(guān)系問題,任何組件都可以最大程度的得到重用。
IoC 模式實(shí)現(xiàn)的技術(shù)途徑
表 2.1 列舉出了 IoC 的三種實(shí)現(xiàn)方式。本文中設(shè)計(jì)并實(shí)現(xiàn)的服務(wù)器端數(shù)據(jù)驗(yàn)證組件就是采用了第一種類型的 IoC 實(shí)現(xiàn)方式。
MVC模式 :
MVC 是 Model-View-Control 的簡(jiǎn)稱,即模型-視圖-控制器。它是一個(gè)存在于服務(wù)器
表達(dá)層的模型,它將應(yīng)用分開,改變應(yīng)用之間的高度耦合。
MVC 是在 20 世紀(jì) 80 年代發(fā)明的一種軟件設(shè)計(jì)模式,至今已被廣泛使用,最近幾年
被推薦為 Sun 公司 J2EE 平臺(tái)的設(shè)計(jì)模式。
MVC 模式結(jié)構(gòu)
MVC 模式將應(yīng)用分為模型、視圖和控制器三個(gè)部分:
1. 視圖:數(shù)據(jù)的展現(xiàn)。
視圖是用戶看到并與之交互的界面。視圖向用戶顯示相關(guān)的數(shù)據(jù),并能接收用戶的輸入數(shù)據(jù),但是它并不進(jìn)行任何實(shí)際的業(yè)務(wù)處理。視圖可以向模型查詢業(yè)務(wù)狀態(tài),但不能改變模型。視圖還能接受模型發(fā)出的數(shù)據(jù)更新事件,從而對(duì)用戶界面進(jìn)行同步更新。
2. 模型:應(yīng)用對(duì)象。
模型是應(yīng)用程序的主體部分。 模型代表了業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯; 當(dāng)數(shù)據(jù)發(fā)生改變時(shí),它要負(fù)責(zé)通知視圖部分;一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù)。由于同一個(gè)模型可以被多個(gè)視圖重用,所以提高了應(yīng)用的可重用性。
3. 控制器:邏輯處理、控制實(shí)體數(shù)據(jù)在視圖上展示、調(diào)用模型處理業(yè)務(wù)請(qǐng)求。
當(dāng) Web 用戶單擊 Web 頁(yè)面中的提交按鈕來(lái)發(fā)送 HTML 表單時(shí),控制器接收請(qǐng)求并調(diào)用相應(yīng)的模型組件去處理請(qǐng)求,然后調(diào)用相應(yīng)的視圖來(lái)顯示模型返回的數(shù)據(jù)。
MVC 模式運(yùn)行機(jī)制
如圖 2.2 所示為 MVC 模式運(yùn)行機(jī)制:
在 MVC 模式中,Web 用戶向服務(wù)器提交的所有請(qǐng)求都由控制器接管。接受到請(qǐng)求之后,控制器負(fù)責(zé)決定應(yīng)該調(diào)用哪個(gè)模型來(lái)進(jìn)行處理;然后模型根據(jù)用戶請(qǐng)求進(jìn)行相應(yīng)的業(yè)務(wù)邏輯處理,并返回?cái)?shù)據(jù);最后控制器調(diào)用相應(yīng)的視圖來(lái)格式化模型返回的數(shù)據(jù),并通過視圖呈現(xiàn)給用戶。
框架
軟件開發(fā)越來(lái)越倚重框架的使用??蚣芸梢钥s短應(yīng)用軟件系統(tǒng)的開發(fā)周期,提高軟件生產(chǎn)效率和質(zhì)量。大大簡(jiǎn)化了開發(fā)。選擇何種框架、每個(gè)框架如何應(yīng)用在在系統(tǒng)架構(gòu)中是軟件架構(gòu)設(shè)計(jì)的重要環(huán)節(jié)。
框架的定義
在設(shè)計(jì)模式中,Gamma 等人為框架給出了一個(gè)明確定義:“框架(Framework)是一組協(xié)同工作的類,它們?yōu)樘囟愋偷能浖?gòu)筑了一個(gè)可重用的設(shè)計(jì)”。
框架是一組為相互協(xié)作的構(gòu)件(Component)的集合,它能夠處理一個(gè)或多個(gè)問題域(Domain)中的一系列問題??蚣軓?qiáng)調(diào)的是軟件設(shè)計(jì)的重用性和系統(tǒng)的可擴(kuò)充性。它是為了追求重用所帶來(lái)的價(jià)值量最大化,而將被重用最多的部分封裝成各個(gè)組件,輔以回調(diào)機(jī)制將它們納入框架的控制范圍之內(nèi)。所以,框架提供了可在應(yīng)用程序之間共享的可復(fù)用的公共結(jié)構(gòu)。
框架的特性
框架包含以下幾個(gè)關(guān)鍵特性:
1.在應(yīng)用方面,框架是整個(gè)或部分系統(tǒng)的可重用設(shè)計(jì),表現(xiàn)為一組抽象構(gòu)件及構(gòu)件實(shí)例間交互的方法;在目標(biāo)方面,框架是可被應(yīng)用開發(fā)者定制的應(yīng)用骨架。
2.框架是一種軟件,是應(yīng)用程序的半成品。它可以供系統(tǒng)開發(fā)者選用,以完成系統(tǒng)的開發(fā)。
3.框架解決的是某個(gè)特定范圍即領(lǐng)域的問題。每個(gè)框架都有自己的目標(biāo)領(lǐng)域,它并不能滿足所有人的所有需求。
來(lái)越不堪重負(fù),因此將系統(tǒng)的商業(yè)分離出來(lái)。單獨(dú)形成一部分,這樣三層結(jié)構(gòu)產(chǎn)生了。
其中‘層’是邏輯上的劃分。
三層體系結(jié)構(gòu)是將整個(gè)系統(tǒng)劃分為如圖2.1所示的結(jié)構(gòu)[3]
(1)表現(xiàn)層(Presentation layer):包含表示代碼、用戶交互GUI、數(shù)據(jù)驗(yàn)證。
該層用于向客戶端用戶提供GUI交互,它允許用戶在顯示系統(tǒng)中輸入和編輯數(shù)據(jù),同時(shí)
系統(tǒng)提供數(shù)據(jù)驗(yàn)證功能。
(2)業(yè)務(wù)邏輯層(Business layer):包含業(yè)務(wù)規(guī)則處理代碼,即程序中與業(yè)務(wù)
相關(guān)專業(yè)算法、業(yè)務(wù)政策等等。該層用于執(zhí)行業(yè)務(wù)流程和制訂數(shù)據(jù)的業(yè)務(wù)規(guī)則。業(yè)務(wù)邏
輯層主要面向業(yè)務(wù)應(yīng)用,為表示層提供業(yè)務(wù)服務(wù)。
(3)數(shù)據(jù)持久層(Persistence layer):包含數(shù)據(jù)處理代碼和數(shù)據(jù)存儲(chǔ)代碼。數(shù)
據(jù)持久層主要包括數(shù)據(jù)存取服務(wù),負(fù)責(zé)與數(shù)據(jù)庫(kù)管理系統(tǒng)(如數(shù)據(jù)庫(kù))之間的通信。
三個(gè)層次的每一層在處理程序上有各自明確的任務(wù),在功能實(shí)現(xiàn)上有清晰的區(qū)分,
各層與其余層分離,但各層之間存有通信接口。
采用三層軟件設(shè)計(jì)架構(gòu)后,軟件系統(tǒng)在可擴(kuò)展性和可復(fù)用性方面得到極大提高,在
資源分配策略設(shè)計(jì)合理運(yùn)用的同時(shí),軟件的性能指標(biāo)也得到提升,系統(tǒng)的安全性和易管東北
理性也得到改善。
三層體系結(jié)構(gòu)對(duì)Web應(yīng)用的軟件架構(gòu)產(chǎn)生很大影響,促進(jìn)了基于組件的設(shè)計(jì)思想,
產(chǎn)生了許多開發(fā)Web層次框架的實(shí)現(xiàn)技術(shù)。較之兩級(jí)結(jié)構(gòu)來(lái)說,三層結(jié)構(gòu)修改和維護(hù)上
更加方便。目前開發(fā)B/S結(jié)構(gòu)的Web應(yīng)用系統(tǒng)廣泛采用這種三層體系結(jié)構(gòu)。
設(shè)計(jì)模式起源:
1994 年,由 Erich Gamma,Richard Helm,Ralph Johnson 和 John Vlissides(即所謂的“四人幫’,GoF:Gang of Four)合作的以《設(shè)計(jì)模式:可復(fù)用的面向?qū)ο筌浖幕驹怼窞轭}目的書藉出版了。這本書解釋了模式的用處,同時(shí)也使得設(shè)計(jì)模式得到廣泛普及。在書中,他們四人記錄了他們長(zhǎng)期工作中發(fā)現(xiàn)的經(jīng)典 23 個(gè)設(shè)計(jì)模式。
IoC模式
IoC 模式是 Apach Avalon 項(xiàng)目創(chuàng)始人之一 Stefano Mazzocchi 提出的一種代碼調(diào)用模式,后被 MartinFowlcr 改名為 Dependency Injection(依賴注入),也就是將類和類,方法和方法之間的關(guān)系通過第三方(如配置文件)進(jìn)行“注入”,不需要類或者方法自己去解決彼此間的調(diào)用關(guān)系。 IoC(Inversion of Control, 控制反轉(zhuǎn)), 是一種用來(lái)解決組件(也可以是簡(jiǎn)單的 Java類)之間依賴關(guān)系、配置及生命周期的設(shè)計(jì)模式,它可以解決模塊間的耦合問題。IoC模式它是把組件之間的依賴關(guān)系提取(反轉(zhuǎn))出來(lái),由容器來(lái)具體配置。這樣,各個(gè)組件之間就不存在代碼關(guān)聯(lián),解決了調(diào)用方與被調(diào)用方之間的關(guān)系問題,任何組件都可以最大程度的得到重用。
IoC 模式實(shí)現(xiàn)的技術(shù)途徑
表 2.1 列舉出了 IoC 的三種實(shí)現(xiàn)方式。本文中設(shè)計(jì)并實(shí)現(xiàn)的服務(wù)器端數(shù)據(jù)驗(yàn)證組件就是采用了第一種類型的 IoC 實(shí)現(xiàn)方式。
MVC模式 :
MVC 是 Model-View-Control 的簡(jiǎn)稱,即模型-視圖-控制器。它是一個(gè)存在于服務(wù)器
表達(dá)層的模型,它將應(yīng)用分開,改變應(yīng)用之間的高度耦合。
MVC 是在 20 世紀(jì) 80 年代發(fā)明的一種軟件設(shè)計(jì)模式,至今已被廣泛使用,最近幾年
被推薦為 Sun 公司 J2EE 平臺(tái)的設(shè)計(jì)模式。
MVC 模式結(jié)構(gòu)
MVC 模式將應(yīng)用分為模型、視圖和控制器三個(gè)部分:
1. 視圖:數(shù)據(jù)的展現(xiàn)。
視圖是用戶看到并與之交互的界面。視圖向用戶顯示相關(guān)的數(shù)據(jù),并能接收用戶的輸入數(shù)據(jù),但是它并不進(jìn)行任何實(shí)際的業(yè)務(wù)處理。視圖可以向模型查詢業(yè)務(wù)狀態(tài),但不能改變模型。視圖還能接受模型發(fā)出的數(shù)據(jù)更新事件,從而對(duì)用戶界面進(jìn)行同步更新。
2. 模型:應(yīng)用對(duì)象。
模型是應(yīng)用程序的主體部分。 模型代表了業(yè)務(wù)數(shù)據(jù)和業(yè)務(wù)邏輯; 當(dāng)數(shù)據(jù)發(fā)生改變時(shí),它要負(fù)責(zé)通知視圖部分;一個(gè)模型能為多個(gè)視圖提供數(shù)據(jù)。由于同一個(gè)模型可以被多個(gè)視圖重用,所以提高了應(yīng)用的可重用性。
3. 控制器:邏輯處理、控制實(shí)體數(shù)據(jù)在視圖上展示、調(diào)用模型處理業(yè)務(wù)請(qǐng)求。
當(dāng) Web 用戶單擊 Web 頁(yè)面中的提交按鈕來(lái)發(fā)送 HTML 表單時(shí),控制器接收請(qǐng)求并調(diào)用相應(yīng)的模型組件去處理請(qǐng)求,然后調(diào)用相應(yīng)的視圖來(lái)顯示模型返回的數(shù)據(jù)。
MVC 模式運(yùn)行機(jī)制
如圖 2.2 所示為 MVC 模式運(yùn)行機(jī)制:
在 MVC 模式中,Web 用戶向服務(wù)器提交的所有請(qǐng)求都由控制器接管。接受到請(qǐng)求之后,控制器負(fù)責(zé)決定應(yīng)該調(diào)用哪個(gè)模型來(lái)進(jìn)行處理;然后模型根據(jù)用戶請(qǐng)求進(jìn)行相應(yīng)的業(yè)務(wù)邏輯處理,并返回?cái)?shù)據(jù);最后控制器調(diào)用相應(yīng)的視圖來(lái)格式化模型返回的數(shù)據(jù),并通過視圖呈現(xiàn)給用戶。
框架
軟件開發(fā)越來(lái)越倚重框架的使用??蚣芸梢钥s短應(yīng)用軟件系統(tǒng)的開發(fā)周期,提高軟件生產(chǎn)效率和質(zhì)量。大大簡(jiǎn)化了開發(fā)。選擇何種框架、每個(gè)框架如何應(yīng)用在在系統(tǒng)架構(gòu)中是軟件架構(gòu)設(shè)計(jì)的重要環(huán)節(jié)。
框架的定義
在設(shè)計(jì)模式中,Gamma 等人為框架給出了一個(gè)明確定義:“框架(Framework)是一組協(xié)同工作的類,它們?yōu)樘囟愋偷能浖?gòu)筑了一個(gè)可重用的設(shè)計(jì)”。
框架是一組為相互協(xié)作的構(gòu)件(Component)的集合,它能夠處理一個(gè)或多個(gè)問題域(Domain)中的一系列問題??蚣軓?qiáng)調(diào)的是軟件設(shè)計(jì)的重用性和系統(tǒng)的可擴(kuò)充性。它是為了追求重用所帶來(lái)的價(jià)值量最大化,而將被重用最多的部分封裝成各個(gè)組件,輔以回調(diào)機(jī)制將它們納入框架的控制范圍之內(nèi)。所以,框架提供了可在應(yīng)用程序之間共享的可復(fù)用的公共結(jié)構(gòu)。
框架的特性
框架包含以下幾個(gè)關(guān)鍵特性:
1.在應(yīng)用方面,框架是整個(gè)或部分系統(tǒng)的可重用設(shè)計(jì),表現(xiàn)為一組抽象構(gòu)件及構(gòu)件實(shí)例間交互的方法;在目標(biāo)方面,框架是可被應(yīng)用開發(fā)者定制的應(yīng)用骨架。
2.框架是一種軟件,是應(yīng)用程序的半成品。它可以供系統(tǒng)開發(fā)者選用,以完成系統(tǒng)的開發(fā)。
3.框架解決的是某個(gè)特定范圍即領(lǐng)域的問題。每個(gè)框架都有自己的目標(biāo)領(lǐng)域,它并不能滿足所有人的所有需求。
轉(zhuǎn)載于:https://www.cnblogs.com/jobscn/archive/2011/11/08/2240725.html
總結(jié)
以上是生活随笔為你收集整理的MVC设计模式学习总结的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 漫谈数据库索引 | 脚印 footpri
- 下一篇: vcard 2.1介绍