• MVC、MVVM、MVP的区别


    MVC、MVVM、MVP是常见的3中软件架构设计模式,主要通过分离关注点的方式来组织代码结构,优化开发效率。

    1、MVC

    • M:Model,模型层,负责存储页面的业务数据,以及对响应数据的操作
    • V:View,视图层,负责页面的显示逻辑
    • C:Controller ,控制层,主要用于处理业务
    • view和model采用观察者模式,当model成数据发生改变时,会通知有关的view页面层更新页面。
    • controller作为model和view层的纽带,主要负责用户与应用的响应操作,当用户与页面产生交互的时候,Controller 中的事件触发器就开始工作了,通过调用 Model 层,来完成对 Model 的修改,然后 Model 层再去通知 View 层更新。
      在这里插入图片描述

    优点:
    耦合性低,方便维护,可以利于分工协作,重用性高;

    缺点:
    使项目构架变得复杂,对开发人员要求高

    2、MVVM

    • M:Model,数据模型,数据和业务逻辑都在Model层中定义;
    • V:View,视图层,负责数据的展示;
    • VM:View-Model,视图模型,负责监听Model中数据的改变并且控制视图的更新,处理用户交互操作;

    view和model是没有直接联系的,而是通过ViewModel这个中间商进行联系。View和ViewModel之间以及 Model和ViewModel之间的交互是双向的。

    • ViewModel能够观察到数据的变化,并对视图View层对应的内容进行更新。
    • ViewModel能够监听到视图的变化,并能够通知Model层数据发生变化。
      在这里插入图片描述
      ViewModel通过数据双向绑定把View层和Model层连接了起来,而 View和Model之前的同步工作完全是自动的,因此开发者只需要关注业务逻辑,不需要手动操作DOM,也不需要关注数据状态的同步问题,这些都由MVVM统一管理。

    优点:

    数据源和视图实现了双向绑定,很好的做好了数据的一致性,相比于MVP各层的耦合度更低,一个ViewModel层可以给对个View层共用。

    缺点:
    使用了dataBinding,增加了大量的内存销毁,增加了程序的编译事件,项目越大内存开销越大,数据绑定是的Bug很难被调试。

    3、MVP

    • M:Model,模型层,用于数据存储以及业务逻辑。
    • V:View,视图层,用于展示与用户实现交互的页面,通常实现数据的输入和输出功能。
    • P:Presenter,表示器,用于连接Model层、View层,完成Model层与View层的交互,还可以进行业务逻辑的处理。
    • 由MVC演变而来,View并不直接使用Model,它们之间的通信而是通过Presenter来进行
      在这里插入图片描述
  • 相关阅读:
    智汀教你如何用手机远程控制智能门锁
    MySQL 中的 sql_mode 选项以及配置
    git 操作大全
    数据库的基本概念
    微擎模块 崛企图文 1.1.7 后台模块+前端小程序,无限多开商用版
    【面试普通人VS高手系列】volatile关键字有什么用?它的实现原理是什么?
    如何在小程序中给会员设置备注
    数字电路中的基础电路结构
    Java 设计模式 — 抽象工厂模式(2)
    分布式机器学习:PageRank算法的并行化实现(PySpark)
  • 原文地址:https://blog.csdn.net/fangqi20170515/article/details/126747597