原链:[https://blog.csdn.net/ljt735029684/article/details/84728867?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159791375919724835843253%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=159791375919724835843253&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v3~pc_rank_v2-1-84728867.first_rank_ecpm_v3_pc_rank_v2&utm_term=MVT%E6%A8%A1%E5%9E%8B+MVVM%E6%A8%A1%E5%9E%8B&spm=1018.2118.3001.4187](https://blog.csdn.net/ljt735029684/article/details/84728867?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522159791375919724835843253%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fall.%2522%257D&request_id=159791375919724835843253&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allfirst_rank_ecpm_v3~pc_rank_v2-1-84728867.first_rank_ecpm_v3_pc_rank_v2&utm_term=MVT%E6%A8%A1%E5%9E%8B+MVVM%E6%A8%A1%E5%9E%8B&spm=1018.2118.3001.4187)
一、MVC
MVC模式的意思是,软件可以分成三个部分。
- 视图(View):用户界面。
- 控制器(Controller):业务逻辑
- 模型(Model):数据保存
通信方式:
- View 传送指令到 Controller
- Controller 完成业务逻辑后,要求 Model 改变状态
- Model 将新的数据发送到 View,用户得到反馈
二、互动模式
接受用户指令时,MVC 可以分成两种方式。一种是通过 View 接受指令,传递给 Controller。
另一种是直接通过controller接受指令。
三、MVC衍生
MVP
MVP 模式将 Controller 改名为 Presenter,同时改变了通信方向。
-
各部分之间的通信,都是双向的。
-
View 与 Model 不发生联系,都通过 Presenter 传递。
-
View 非常薄,不部署任何业务逻辑,称为"被动视图"(Passive View),即没有任何主动性,而 Presenter非常厚,所有逻辑都部署在那里。
MVVM
MVVM 模式将 Presenter 改名为 ViewModel,基本上与 MVP 模式完全一致。
唯一的区别是,它采用双向绑定(data-binding):View的变动,自动反映在 ViewModel,反之亦然。Angular 和 Ember 都采用这种模式。
MVT(django)
MVT是python中django框架使用的一种架构模式。M是models,v是views,T是templates。
很多人都说MVT跟MVC只是换了个名,但由于MVC模式发展到现在有多种,你说的是哪种哇嘎奶哟。但从上图明显可以看出,MVT更接近于MVP模式,或者说,这两者才应该划上等号。
其中M相当于MVP的M,但MVT的views对应的是presenter,而templates对应的才是MVP的view。