小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

加深對于 MVC、MVP、MVVM 的概念理解

 Coder編程 2020-04-21

MVC

MVC - 維基百科,自由的百科全書

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

M-Model 模型

V-View 視圖

C-Controller 控制器

對 MVC 的誤解及緣由

誤解:頁面視圖 = View ,Entity 和 Dto = Model

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

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

項目結(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ù)綁定代碼和對參數(shù)的XSS校驗和Sql注入校驗。但是新的問題出現(xiàn),數(shù)據(jù)庫字段變動或者業(yè)務(wù)調(diào)整,Model 層的改動涉及到了 Entity、Dto、DataAccess、Business。在此不作 ASP.NET Web Form 和 ASP.NET MVC 的優(yōu)劣比對。

MVP

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

P:Presenter

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

摘自 Model-view-presenter - 維基百科,自由的百科全書

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

MVVM

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

摘自 MVVM - 維基百科,自由的百科全書

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

在此推薦兩個按照 MVVM開發(fā)模式的開源項目

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

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多