MVC
问题:
-
View不能独立处理用户事件 - 一个
View对应一个Model,复用性差 - 适合无界面、多业务处理的后端使用
模式
主要使用的是策略模式
MVP
改良:
- 用户事件由
View处理 -
Model与View完全解耦,View可抽离为接口提供给上层使用 -
View可抽离为独立组件,适合事件处理
问题
Model与View的数据同步需要Presenter手动绑定,Presenter过重
模式
主要使用的是观察者模式
MVVM
改良
View与Model自动同步,只需要指定View要显示的数据对应哪一部分的Model即可。这种架构模式目前是最适合前端使用的。
总结
-
MV*的目的是把数据、业务逻辑、界面三块解耦,分离关注点 - 业务逻辑不再关注底层数据读写,而数据以对象形式导给业务逻辑
- 前端以界面逻辑为主