MVC是Model-View-Control的缩写,Model指的是数据层,View指的是UI层,Control指的是控制层,这三层之间彼此联系。View层的用户行为,触发Control层,Control层经过相应处理后,将数据转入到Model层。Model层数据的改变又直接更新View层。
MVP是Model-View-Presenter的缩写,Model指的是数据层,View指的是UI层,Presenter是控制层。在MVC模式中,Model数据的改变会直接引发View层的更新,这样就有可能在Model中混入一些逻辑,并且也会彼此耦合度加大。而MVP则将Model和View层彻底的分离,Model的数据改变将触发Presenter层,Presenter层进行相应的处理后,再更新到View层中,而View层的用户行为也将触发Presenter层,Presenter层进行相应的处理后,将数据转入到Model层中。
MVT是Model-View-Template的缩写,Model指的是数据层,View指的是请求视层,Template指提模板层。Model与View层与前面的相似,调用不同的Template可以呈现不同的View。那数据的控制呢?其实MVT这个概念源于django,在MVC模式中的控制层变成了django的框架层(Framework)。可以看看这个http://www.cs.colorado.edu/~kena/classes/6448/f08/framework_presentations/django.pdf。