mvc、mvp、mvvm、mv*、組合模式分別的理解?

  • MVC(Model-View-Controller)

  • 視圖(View):用戶界面。

  • 控制器(Controller):業務邏輯

  • 模型(Model):數據保存

  • 接受用戶指令時,MVC 可以分成兩種方式。一種是通過 View 接受指令,傳遞給 Controller。

wKiom1cpohGzyC9LAABJ9nSLF_M817.png

另一種是直接通過controller接受指令。

wKiom1cpohKTKEjAAABHD46_rrc084.png

MVC的一般流程是這樣的:View(界面)觸發事件--》Controller(業務)處理了業務,然後觸發了數據更新--》不知道誰更新了Model的數據--》Model(帶着數據)回到了View--》View更新數據


MVP(Model-View-Presenter)

切斷的View和Model的聯繫,讓View只和Presenter(原Controller)交互,減少在需求變化中需要維護的對象的數量

wKiom1cppzWS24sTAACFR3m2m0E784.jpg

wKioL1cpqAzzTq6wAACLHi5y7XI375.jpg

1. 各部分之間的通信,都是雙向的。

2. View 與 Model 不發生聯繫,都通過 Presenter 傳遞。

3. View 非常薄,不部署任何業務邏輯,稱爲"被動視圖"(Passive View),即沒有任何主動性,而 Presenter非常厚,所有邏輯都部署在那裏。

MVVM(Model-View-ViewModel

它採用雙向綁定(data-binding):View的變動,自動反映在 ViewModel,反之亦然。Angular和 Ember 都採用這種模式。

wKioL1cprq-xDIMCAABj8q8ysJQ787.jpg

ViewModel大致上就是MVP的Presenter和MVC的Controller了,而View和ViewModel間沒有了MVP的界面接口,而是直接交互,用數據“綁定”的形式讓數據更新的事件不需要開發人員手動去編寫特殊用例,而是自動地雙向同步

比起MVP,MVVM不僅簡化了業務與界面的依賴關係,還優化了數據頻繁更新的解決方案,甚至可以說提供了一種有效的解決模式

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章