软件框架模式有哪些?MVC、MVP、MVVM等,接下来我们主要理解这三种模式。
简单概括:主要有三个板块:视图——控制器——数据模型,MVC中三者是一个闭环,它把视图层和业务层简单分离,页面展示是直接根据数据模型进行渲染,view变化时传递给控制器,控制器进行交互操作和直接调用数据模型给出的方法修改数据模型。MVP在mvc的基础上切断了视图和数据逻辑的联系,把视图层和业务层更深的分离,分工明确,提高开发效率,controller需要做的操作更多更臃肿。MVVM在MVP的引入了数据驱动、双向绑定的概念,把简单的逻辑交给视图层处理(如v-if v-for),用户交互视图改变大部分只要操作数据,视图改变也会直接改变数据,减轻控制器的压力。
MVC(Model数据结构-View用户界面-Controller控制器):Model是应用程序中处理数据逻辑部分的;View是应用程序中处理数据显示的部分;Controller是应用程序中处理用户交互逻辑部分。
MVC流程图优点:对视图层和业务层大概进行分离。更改视图层代码不用重新编译模型和控制器代码,使后端专注于业务逻辑,前端专注于表现形式上。缺点:Model和View直接打交道,耦合度高;UI交互逻辑和数据操作逻辑都在Controller中,特别臃肿,维护困难。
MVP(Model数据结构-View用户界面-Presenter业务逻辑):P层替代了C层,V层和M层的交互被P层隔断,从理论上除去了V和M的耦合。
MVP优点:V和M切断联系,耦合度降低,分工更加明确,效率提升。缺点:所有逻辑都写在P层,导致O层更加臃肿难维护。
MVVM(Model业务模型-View用户界面-ViewModel):和MVP大致相同,它采用了双向绑定,View和Model的改变都会通过viewModel进行更新。这样把P层削弱为VM层,部分简单逻辑分给V层(例如v-for, v-if)。
MVVM优点: 集合前两者优点并且使得VM层相比P层没有那么臃肿。
总结:我从前端角度理解:MVC模式时候,html涉及数据部分会用JAVA模版引擎渲染,前端需要写html和JAVA模版引擎语法完成视图层工作,操作DOM完成用户交互和请求数据发送。MVP模式时候,切断了数据模型和视图的联系,前端请求到数据,用JS模版引擎或字符串拼接完成html页面,操作DOM完成用户交互和请求数据发送。MVVM采用了虚拟DOM+双向绑定形成了数据驱动的模式,大幅度减少DOM操作,减轻了控制层的任务。
网友评论