MVC,MVP,MVVM那些事儿
2017-01-10 本文已影响58人
evelynlab
MV*的讨论太多了。在此做粗浅的理解。对设计模式的理解也许会渐进式加深吧。
MVC
mvc解决的问题是:m和v的分离, m不应当因为v的改变而改变。所以v到m是单向依赖。
mvc的一般流程:view触发事件--> controller处理业务-->触发数据更新-->不知道谁更新了model数据--> model 带着数据回到了view --> view更新了数据。
但是,在mvc里,当有变化的时候要同时维护三个对象和三个交互,这显然让事情复杂化了。为了改进mvc,出现了mvp(不知道可不可以这么理解)
MVP (presenter)
mvp切断了view和model的联系。 让view只和presenter交互,减少在需求变化中需要维护的对象的数量。
MVVM(viewmodel)
MVVM的数据是双向绑定。当有更新时它让更维护变得更简单了。mvvm做服务端是不适用的。
它们的共同点
mv*都是基于数据驱动的。维护数据比维护UI爽多了(think of jquery)。
它们的区别:
-
数据流向不同
上图,看下MVC, MVVM的数据流向:
Paste_Image.png - 解决问题不同
正如上面所说,MVC最初是为了解决MV的分离。 - 适用场景不同
MVVM不太适合后端场景。