模式-视图-控制器模式2.0
1 MVC的實(shí)現(xiàn)?
1.1 分析應(yīng)用問(wèn)題,對(duì)系統(tǒng)進(jìn)行分離?
分析應(yīng)用問(wèn)題,分離出系統(tǒng)的內(nèi)核功能、對(duì)功能的控制輸入、系統(tǒng)的輸出行為三大部分。設(shè)計(jì)模型部件使其封裝內(nèi)核數(shù)據(jù)和計(jì)算功能,提供訪問(wèn)顯示數(shù)據(jù)的操作,提供控制內(nèi)部行為的操作以及其他必要的操作接口。以上形成模型類的數(shù)據(jù)構(gòu)成和計(jì)算關(guān)系。這部分的構(gòu)成與具體的應(yīng)用問(wèn)題緊密相關(guān)。?
1.2 設(shè)計(jì)和實(shí)現(xiàn)每個(gè)視圖?
設(shè)計(jì)每個(gè)視圖的顯示形式,它從模型中獲取數(shù)據(jù),將它們顯示在屏幕上。?
1.3 設(shè)計(jì)和實(shí)現(xiàn)每個(gè)控制器?
對(duì)于每個(gè)視圖,指定對(duì)用戶操作的響應(yīng)時(shí)間和行為。在模型狀態(tài)的影響下,控制器使用特定的方法接受和解釋這些事件。控制器的初始化建立起與模型和視圖的聯(lián)系,并且啟動(dòng)事件處理機(jī)制。事件處理機(jī)制的具體實(shí)現(xiàn)方法依賴于界面的工作平臺(tái)。?
1.4 使用可安裝和卸載的控制器?
控制器的可安裝性和可卸載性,帶來(lái)了更高的自由度,并且?guī)椭纬筛叨褥`活性的應(yīng)用。控制器與視圖的分離,支持了視圖與不同控制器結(jié)合的靈活性,以實(shí)現(xiàn)不同的操作模式,例如對(duì)普通用戶、專業(yè)用戶、或不使用控制器建立的只讀視圖。這種分離還為在應(yīng)用中集成新的I/O設(shè)備提供了途徑。?
2 MVC的變化?
把模型、視圖、控制器實(shí)行分離,使設(shè)計(jì)和使用有了很大靈活性。但是,在現(xiàn)實(shí)中,視圖和控制器的功能通常是緊密地聯(lián)系在一起的。控制視圖工作的輸入事件通常都是與視圖的構(gòu)成相關(guān)的。在現(xiàn)實(shí)界面設(shè)計(jì)環(huán)境中,界面操作事件及其處理都是與界面形式設(shè)計(jì)緊密關(guān)聯(lián)的。在這種情況下,把視圖和控制器分離開(kāi),就給分析和設(shè)計(jì)帶了了不方便,并且運(yùn)行的效率低。?
因此,可以把視圖和控制器結(jié)合起來(lái)加以設(shè)計(jì)和實(shí)現(xiàn)。在上面的實(shí)現(xiàn)說(shuō)明中,只要把視圖和控制器的類合并生成新的視圖類即可。這樣,仍然保持著與模型的分離,因此相同的模型仍然可以使用多個(gè)視圖。這些視圖本身已經(jīng)具備了事件處理能力,仍然可以通過(guò)模型對(duì)其功能進(jìn)行控制。?
3 MVC的優(yōu)點(diǎn)及不足之處?
3.1 MVC的優(yōu)點(diǎn)?
MVC的優(yōu)點(diǎn)表現(xiàn)在以下幾個(gè)方面:?
(1) 可以為一個(gè)模型在運(yùn)行時(shí)同時(shí)建立和使用多個(gè)視圖。變化-傳播機(jī)制可以確保所有相關(guān)的視圖及時(shí)得到模型數(shù)據(jù)變化,從而使所有關(guān)聯(lián)的視圖和控制器做到行為同步。?
(2) 視圖與控制器的可接插性,允許更換視圖和控制器對(duì)象,而且可以根據(jù)需求動(dòng)態(tài)的打開(kāi)或關(guān)閉、甚至在運(yùn)行期間進(jìn)行對(duì)象替換。?
(3) 模型的可移植性。因?yàn)槟P褪仟?dú)立于視圖的,所以可以把一個(gè)模型獨(dú)立地移植到新的平臺(tái)工作。需要做的只是在新平臺(tái)上對(duì)視圖和控制器進(jìn)行新的修改。?
(4) 潛在的框架結(jié)構(gòu)。可以基于此模型建立應(yīng)用程序框架,不僅僅是用在設(shè)計(jì)界面的設(shè)計(jì)中。?
3.2 MVC的不足之處?
MVC的不足表現(xiàn)在以下幾個(gè)方面:?
(1) 增加了系統(tǒng)結(jié)構(gòu)和實(shí)現(xiàn)的復(fù)雜性。對(duì)于簡(jiǎn)單的界面,嚴(yán)格遵循MVC,使模型、視圖與控制器分離,會(huì)增加結(jié)構(gòu)的復(fù)雜性,并可能產(chǎn)生過(guò)多的更新操作,降低運(yùn)行效率。?
(2) 視圖與控制器間的過(guò)于緊密的連接。視圖與控制器是相互分離,但確實(shí)聯(lián)系緊密的部件,視圖沒(méi)有控制器的存在,其應(yīng)用是很有限的,反之亦然,這樣就妨礙了他們的獨(dú)立重用。?
(3)視圖對(duì)模型數(shù)據(jù)的低效率訪問(wèn)。依據(jù)模型操作接口的不同,視圖可能需要多次調(diào)用才能獲得足夠的顯示數(shù)據(jù)。對(duì)未變化數(shù)據(jù)的不必要的頻繁訪問(wèn),也將損害操作性能。?
(4) 目前,一般高級(jí)的界面工具或構(gòu)造器不支持MVC模式。改造這些工具以適應(yīng)MVC需要和建立分離的部件的代價(jià)是很高的,從而造成使用MVC的困難。?
轉(zhuǎn)載于:https://www.cnblogs.com/6354-aa/p/9100795.html
總結(jié)
以上是生活随笔為你收集整理的模式-视图-控制器模式2.0的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++的多态
- 下一篇: ALM 中查看某个 test 的更改 h