首先给大家讲解两个词:code block和code behind
啥事code block呢,就是逻辑代码块,业务代码块
而code behind 呢就是我们前台的视图层和codeblock连接的部分,很好地处理UI和逻辑各自分开的关系,你可以让UI和逻辑各自做好各自的事情。
但是这两个词有点不够见名知义,所以我们发明出了几个模式的名字:
然后,讲一讲大家常常将的mvc,easy,视图层,控制层,模型逻辑层,view,control,model
但这个模式一般用于后端,控制层除了主要是用于跳转和应用逻辑层,将逻辑层的数据库连接代码块和相关的业务代码块相连接。
之后,我们再来看看mvvm模式。
这个一般用于前端的某些方面,比如说现在比较火的vue.js,就是用的这个模式、
啥是mvvm呢,虽然有四个字母,但其实他也只有三个字,view,view-model、model
这里的view-model就充当了控制器的作用
我们知道vue.js最核心的功能有两个,一是响应式的数据绑定系统,二是组件系统
那么,我们的这个框架怎么去调用他的组件呢,实现调用已有的一些组件,通过view-model这个东西来实现调用
在MVP之后出现的一种“更好的”UI模式解决方案
ViewModel大致上就是MVP的Presenter和MVC的Controller了,而View和ViewModel间没有了MVP的界面接口,而是直接交互,用数据“绑定”的形式让数据更新的事件不需要开发人员手动去编写特殊用例,而是自动地双向同步。
好,然后我们再看看mvp模式
其实就和mvc没太大区别了,他是多mvc的一个优化
重点在interface,接口
MVP定义了Presenter和View之间的接口,让一些可以根据已有的接口协议去各自分别独立开发,以此去解决界面需求变化频繁的问题。上面两图都有接口,不过接口的实现和使用细节不一样,不过思想上是一致的。
我们知道一个常识,需求变化最频繁的并不一定是最接近用户的界面,但基本可以确定的是,最接近用户的界面是因为需求变化而需要最频繁更改的。
所以,在不用mvvm模式的时候,mvp无疑比mvc要强大很多,直接有一些接口和前端界面相连了。
综上所述,你搞明白了三者的关系了吗?
附加几个链接:
知乎:https://www.zhihu.com/question/20148405
blog:http://www.cnblogs.com/indream/p/3602348.html