对 MVC、MVP、MVVM 模式的理解

首先要明确的是这三者是框架模式,为防止面试的时候一脸懵逼,还是要了解一下的。当然,如果是想要深入理解,是需要花费不小的精力的。

MVC( Model-View-Controller)
  • M (模型)
    Model层,负责处理数据和业务逻辑,在数据变化时更新控制器。对于我们web应用来说,可以简单的理解为后台中负责处理业务逻辑以及操作数据库的部分。
  • V(视图)
    视图(view)代表模型包含的数据的可视化,当然,还可以响应用户的一些操作。在web中可以理解为一个网页。
  • C(控制器)
    控制器(Controller),沟通view和modal的桥梁。比如用户进行一个表单提交,会先到C层,由C层决定调用哪个M层的接口。当M层处理完之后,需要更新数据展示给用户,也会先到C层,由C层决定调用哪个V。

jsp + servlet + javabean的模式就是一种MVC模式。

MVP(Model-View-Presenter)
  • M 模型,提供数据
  • V 视图, 负责显示
  • P Presenter,负责逻辑的处理。
    用户对 View 的操作都会从 View 交易给 Presenter,Presenter 会执行相应的应用程序逻辑,并且会对 Model 进行相应的操作;而这时候 Model 执行业务逻辑以后,也是通过观察者模式把自己变更的消息传递出去,但是是传给 Presenter 而不是 View。Presenter 获取到 Model 变更的消息以后,通过 View 提供的接口更新界面。
    MVC中的C,通常只起到桥梁或者说是胶水的作用,即连接M和V。是不需要进行逻辑处理的,只需要在一个响应流程中,控制用哪个视图和模型。也就是说,相对于C来说,P要做的事情会多一点。
    那MVP和MVC的区别紧紧是这个吗?其实不止。
    MVC有一个问题,即View是可以直接访问Model的!也就是说,View里面可能会包含model信息,这样不可避免的还会包含一些业务逻辑。在MVC里,更关注的是model的不变,而同时有多个用于对model的不同展示的view。所以,在MVC里,model不依赖于View,而View依赖于model。而且也会因为View中包含有一些业务逻辑,导致后期对View的修改会比较困难。
    而MVP则解决了这个问题。在MVP里,Presenter完全把Model和View进行了分离,主要的程序逻辑在Presenter里实现。Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更View时候可以保持Presenter的不变。
MVVM(Model-View-ViewModel)

如果说MVP是对MVC的一种改良,那么MVVM也可以说是对MVP的一种改良。那它改了什么呢?是的,你没看错,它把P改成了VM(手动狗头)。
ViewModel层:视图适配器。暴露属性与View元素显示内容或者元素状态一一对应。可以简单把 ViewModel 理解为页面上所显示内容的数据抽象。
在 ViewModel 当中会有一个叫 Binder的东东,以前全部由 Presenter 负责的 View 和 Model 之间数据同步操作交由给 Binder 处理。它的最主要作用是在View和ViewModel之间做了双向数据绑定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值