最近在看了一篇關於 MVP 的文章,蠻簡單的,就是介紹了什麼是MVP模式。
但是對於 MVC 和 MVP 的差異真沒有搞得很清楚。 看後的感覺就是「MVP 只是規範更嚴格的 MVC 而已」。
MVP 中的 Presenter 到底扮演著一個什麼角色呢?
我查了一些關於 MVP 的資料。都說 Presenter 相對於 MVC 中的 Controller 來說,還多了一個將 Model 和 View 充分剝離的功能。但其實在我的概念裡(在平時的應用中),MVC 中的 Model 和 View 是可以做到剝離的。我平常的開發中,都會把 Model 中提供的資料在 Controller 處理完後再渲染到頁面的。也就是說,其實很多時候 MVC 已經可以做到 V 和 M 的分離了。那麼,提出 MVP 模式的目的或說要點何在呢?
希望大家能給自己的看法,謝謝!
我深信 沒有不好的問題,只有不好的回答。
起初,只有命令列。
軟體工程師的靈就運作在 shell 上。
Xerox 說:「要有 GUI」…
一、桌面軟體的 MVC
感謝 Smalltalk。感謝 GUI。
二、B/S 架構的 MVC
後來,網路興起,於是程式設計師把自己的程式放到伺服器上運行,此時 GUI 發生了變化。所有的介面的現實 (View層)換成了瀏覽器(HTML)。
此時,MVC 被帶到了 BS 架構。感謝 sun。感謝 struts。
三、前端的 MVP
再後來,瀏覽器越來越強悍,於是很多的業務放到了瀏覽器裡面來執行。
於是程式設計師把 MVC 帶到了 View 層。但用 HTML+CSS+JS 做顯示層,和傳統的桌面 GUI 又有很大差別。 於是,為了充分發揮 js 語言的特點,MVP 就出現了。
Comparison of Architecture presentation patterns MVP(SC),MVP(PV),PM,MVVM and MVC
[翻譯] MVP(SC),MVP(PV),PM,MVVM 與 MVC 表現模式架構比較
架構的演進:
MVC模式:
View Controller Model;Controller不僅負責路由,而且同時負責業務層與表現層的銜接,在開發的時候可以靈活在控制器中配置的功能。在開發時不如MVP直觀,關注點也沒的MVP中更簡潔。
MVP模式:
View Presenter(Controller Events) Model;Presenter隱藏了路由,控制器部分,使開發無需關心訊息的路由與控制層,精力放到每個訊息引發的事件中,在事件中進行業務操作。使得開發更簡單直觀,但是犧牲了對控制器層操作的彈性。
MVVM模式:
View ViewModel Model;ViewModel不僅可以作為MVP中Presenter的功能,同時ViewModel可以主動更新View。而不是單一的由View觸發後台更新。可以這麼說MVVM就是MVP的增強版