细说 MVC 模式与 MVVM 模式的那点区别

MVC模式:

在这里插入图片描述

  • M:Model(数据模型),用于存放数据

  • V:View(视图),也就是用户界面

  • C:Controller 是 ModelView的协调者,Controller 负责将Model的数据用View显示出来

    三者之间的关系:

    Controller可以直接与ModelView进行通信,而View不能与Controller直接通信。

    当有数据更新时,Model 也要与 Controller 进行通信,这个时候就要用 NotificationKVO,这个方式就像发广播一样,Model 发信号,Controller 设置接收监听信号,当有数据更新是就发信号给ControllerModelView 不能直接通信,这样违背 MVC 设计原则。

    ViewController通信需要利用代理协议的方式,Controller可以直接根据Model决定View的展示。View如果接受响应事件则通过delegatetarget-actionblock等方式告诉Controller的状态变化。Controller进行业务的处理,然后再控制View的展示。

    MVC:
        用户操作 > View (负责接受用户的输入操作) > Controller(业务逻辑处理)> Model(数据持久化)> View(将结果通过View反馈给用户)
        
    缺点:

    1、所有业务逻辑都在Controller里操作,逻辑复杂且不利于维护
    2、大量的DOM 操作使页面渲染性能降低,加载速度变慢,影响用户体验
    3、当 Model 频繁发生变化,需要主动更新到View ;当用户的操作导致Model发生变化,同样需要将变化的数据同步到Model中, 这样的工作不仅繁琐,而且很难维护复杂多变的数据状态。

    由于MVC模式的缺陷,MVC 的变种模式衍生出 MVVM模式

MVVM模式:

在这里插入图片描述
核心是提供对View 和 ViewModel 的 双向数据绑定,View和Model之间并没有直接的联系,而是通过ViewModel进行交互,View的变动,自动反映在ViewModel上,反之亦然,这样就保证视图和数据的一致性。

  • M:Movel(数据模型)
  • V:View
  • VM:ViewModel 是一个同步View 和 Model的对象

三者之间的关系:

View 和 Model 之间并没有直接的联系,而是通过ViewModel进行交互。
ViewModel 通过双向数据绑定把 View 层和 Model 层连接了起来,而View 和 Model 之间的同步工作完全是自动的,无需人为干涉,因此开发者只需关注业务逻辑,不需要手动操作DOM, 不需要关注数据状态的同步问题,复杂的数据状态维护完全由 MVVM 来统一管理。

VM双向绑定:
在 MVVM 框架中,View(视图) 和 Model(数据) 是不可以直接通讯的,在它们之间存在着 ViewModel 这个中间介充当着观察者的角色。当用户操作 View(视图),ViewModel 感知到变化,然后通知 Model 发生相应改变;反之当 Model(数据) 发生改变,ViewModel 也能感知到变化,使 View 作出相应更新。这个一来一回的过程就是我们所熟知的双向绑定。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
MVCMVPMVVM是常用的软件设计模式,用于分离应用程序的不同组件,提高代码的可维护性和可重用性。以下是它们的概念和区别: 1. MVC模式模型-视图-控制器):MVC模式是最古老也是最常用的设计模式之一。它将应用程序分为三个组件:模型视图和控制器。模型负责处理数据和业务规则,视图负责展示数据给用户,控制器负责处理用户输入并更新模型视图MVC模式通过分离关注点,使得修改一个组件对其他组件没有依赖,增强了代码的可维护性。 2. MVP模式模型-视图-展示器):MVP模式是基于MVC模式的演化,主要用于桌面和移动应用程序的开发。它与MVC的不同之处在于,视图和控制器被合并成一个展示器,展示器负责处理用户输入、更新模型并更新视图。MVP模式通过与视图分离,使得视图的变化不会影响展示器的逻辑。这样,在测试时可以更轻松地独立对展示器进行单元测试。 3. MVVM模式模型-视图-视图模型):MVVM模式是一种用于构建用户界面的设计模式。它将视图的状态和行为抽象成一个视图模型视图模型负责处理用户输入、保存视图状态、与模型进行交互,并通过数据绑定将数据自动更新到视图上。MVVM模式通过数据绑定机制,使得视图模型之间的通信变得更简单,提高了可维护性和可重用性。它常用于Web前端开发和桌面应用程序的现代界面开发。 总结来说,MVCMVPMVVM是三种常见的软件设计模式MVC模式是最早的一种,将应用程序分为模型视图和控制器,用于分离关注点。MVP模式是基于MVC模式的演化,通过将视图和控制器合并成一个展示器,便于测试和维护。MVVM模式是用于构建用户界面的设计模式,通过视图模型和数据绑定机制,实现了视图模型之间的解耦。每种模式都有自己的特点和适用场景,根据具体需求选择合适的模式可以提高开发效率和代码质量。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值