MVC的概念相信你们应该都已经不陌生了。简单说来,MVC分别是Model、View和Controller。Model负责数据和访问数据的方法,View负责展现,Controller负责业务逻辑。这样各司其职,各功能模块也就好分离和测试。前端
接触前端后,又有了许多新名词。包括MVP和MVVM。今天就来讲下这个MVP和MVVM。模块化
其实他们的区别很简单。先上一张图,而后再来一些文字说明。测试
首先明确下传统的MVC模式。这种模式下,用户和View交互,而后View将用户的操做传递给Controller,Controller根据业务逻辑对Model进行更新。而View以观察者方式来判断Model的变化,再来更新View本身。blog
优势:不一样功能分层,利于功能的模块化。接口
缺点:因为Controller依赖于view,所以不易测试。同步
而后是MVP。在此模式下,C变为P,既由Controller变为Presenter。此时,View不是经过监听Model进行更新,而是Presenter根据Model的变化而后经过 View提供的接口来对View进行修改。方法
优势:功能集中于Presenter,所以便于测试。im
缺点:可能致使Presenter过于庞大。数据
最后是MVVM。在此模式下,C变为ViewModel。此时,调用关系和MVP差很少,不一样的是ViewModel中有一个专门的Binder用来负责数据的同步。这样便可以保证View和Model保持一致,也能够减小ViewModel的代码量。img
优势:减小Controller大小,易维护。
缺点:引入过多,不适合小应用。