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