日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

加深對(duì)于 MVC、MVP、MVVM 的概念理解

 Coder編程 2020-04-21

MVC

MVC - 維基百科,自由的百科全書(shū)

MVC 是軟件工程的一種軟件架構(gòu)模式,它不是具體的技術(shù),而是一種代碼分層的理念,主要體現(xiàn)了職責(zé)分離原則。

M-Model 模型

V-View 視圖

C-Controller 控制器

對(duì) MVC 的誤解及緣由

誤解:頁(yè)面視圖 = View ,Entity 和 Dto = Model

緣由:因?yàn)閯側(cè)肟映绦騿T職業(yè)的時(shí)候,接觸的是 ASP.NET Web Form 項(xiàng)目,而 ASP.NET Web Form 對(duì)于 Controller 和 View 的職責(zé)并沒(méi)有很好的規(guī)劃和定義,所以自己就很粗暴的把頁(yè)面視圖認(rèn)為是 View 層。View 頁(yè)面散列在各個(gè) Controller 之下,雖竭力將文件夾命名清晰,但因?yàn)?Model 沒(méi)有很好的實(shí)現(xiàn),Dto亂飛,數(shù)據(jù)訪問(wèn)代碼在 Controller 隨處可見(jiàn),某些 Controller 文件中代碼堆積,各種邏輯全在 Controller 層。

嘗試優(yōu)化:將 View 歸置到一個(gè)文件夾之下,將 Entity 和 Dto 獨(dú)立類(lèi)庫(kù),分出數(shù)據(jù)訪問(wèn)層 DataAccess 和 業(yè)務(wù)邏輯層 Business ,通用方法層 Common

項(xiàng)目結(jié)構(gòu)大概是

  • Demo.Web

    • Views

    • Controllers

  • Demo.Entity

  • Demo.Dto

  • Demo.DataAccess

  • Demo.Business

  • Demo.Common

不太完美的結(jié)果:優(yōu)化之后代碼結(jié)構(gòu)比之前的要清晰許多,Controller 放數(shù)據(jù)綁定代碼和對(duì)參數(shù)的XSS校驗(yàn)和Sql注入校驗(yàn)。但是新的問(wèn)題出現(xiàn),數(shù)據(jù)庫(kù)字段變動(dòng)或者業(yè)務(wù)調(diào)整,Model 層的改動(dòng)涉及到了 Entity、Dto、DataAccess、Business。在此不作 ASP.NET Web Form 和 ASP.NET MVC 的優(yōu)劣比對(duì)。

MVP

MVP 是 MVC 模式的延伸,不是替代品。

P:Presenter

Presenter 包含著組件的事件處理,負(fù)責(zé)檢索 Model 獲取數(shù)據(jù),和將獲取的數(shù)據(jù)經(jīng)過(guò)格式轉(zhuǎn)換與 View 進(jìn)行溝通。

摘自 Model-view-presenter - 維基百科,自由的百科全書(shū)

在我看來(lái) Presenter 層應(yīng)該是被包含在 Business 層,因?yàn)橐?guī)劃時(shí)對(duì) Business 層的部分職責(zé)預(yù)想和上述引用完全一致。因?yàn)闆](méi)有更具體地規(guī)劃 Presenter ,所以后期項(xiàng)目中 Business 層和 Controller 層中參雜了本應(yīng)由 Presenter 層承擔(dān)的職責(zé)代碼,降低了項(xiàng)目的可維護(hù)性。

MVVM

MVVM有助于將圖形用戶界面的開(kāi)發(fā)與業(yè)務(wù)邏輯后端邏輯(數(shù)據(jù)模型)的開(kāi)發(fā)分離開(kāi)來(lái),這是通過(guò)置標(biāo)語(yǔ)言或GUI代碼實(shí)現(xiàn)的。MVVM的視圖模型是一個(gè)值轉(zhuǎn)換器,[1] 這意味著視圖模型負(fù)責(zé)從模型中暴露(轉(zhuǎn)換)數(shù)據(jù)對(duì)象,以便輕松管理和呈現(xiàn)對(duì)象。在這方面,視圖模型比視圖做得更多,并且處理大部分視圖的顯示邏輯。[1] 視圖模型可以實(shí)現(xiàn)中介者模式,組織對(duì)視圖所支持的用例集的后端邏輯的訪問(wèn)。

摘自 MVVM - 維基百科,自由的百科全書(shū)

ViewModel 作為中介者,屏蔽了數(shù)據(jù)綁定過(guò)程代碼和GUI代碼,借助 XMAL 標(biāo)記語(yǔ)言可以輕松完成復(fù)雜的 GUI 展示。WPF 的強(qiáng)大不用多說(shuō)。

在此推薦兩個(gè)按照 MVVM開(kāi)發(fā)模式的開(kāi)源項(xiàng)目

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購(gòu)買(mǎi)等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類(lèi)似文章 更多