MVC、MVP及MVVM的比较

从Android开发的角度比较MVC,MVP,MVVM的优缺点 作为一种新的模式,MVP与MVC有着一个重大的区别:在MVP中View并不直接使用Model,它们之间的通信是通过Presenter(MVC中的Controller)来进行的,虽然MVP 的表示层Presenter阻断了展现层view和模块层model的直接联系,但是展示层中的每个控件都得声明,对每个控件都需要使用 get方法获取控件的值,使用 set 方法更新控件的值。视图与控制器是相互分离,但却是联系紧密的部件,视图没有控制器的存在,其应用是很有限的,反之亦然,这样就妨碍了他们的独立重用。 阅读详情

    首先,我要先给大家介绍一下这三种模式:

           MVC模式:MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写。MVC开始是存在于桌面程序中的,M是指业务模型,V是指用户界面,C则是控制器,使用MVC的目的是将M和V的实现代码分离,从而使同一个程序可以使用不同的表现形式。

           MVP模式:简称:MVP 全称:Model-View-Presenter ;MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的地方:Controller/Presenter负责逻辑的处理,Model提供数据,View负责显示。

          MVVM模式:MVVM模式不但能够实现UI设计的分离,而且能充分发挥RIA技术中的数据绑定的技术和特点,提高软件的复用性。

   下面,我再说一下这三种模式的好处:

          MVC模式:

                     1、一个模型提供不同的多个视图表现形式,也能够为一个模型创建新的视图而无须重写模型。一旦模型的数据发生变化,模型将通知有关的视图,每个视图相应地刷新自己。
                     2、模型可复用。因为模型是独立于视图的,所以可以把一个模型独立地移植到新的平台工作。
                     3、提高开发效率。在开发界面显示部分时,你仅仅需要考虑的是如何布局一个好的用户界面;开发模型时,你仅仅要考虑的是业务逻辑和数据维护,这样能使开发者专注于某一方面的开发,提高开发效率。
  

          MVP模式:

                     1、模型与视图完全分离,我们可以修改视图而不影响模型。
                   2、可以更高效地使用模型,因为所有的交互都发生在一个地方 —— Presenter内部。
                   3、我们可以将一个Presener用于多个视图,而不需要改变Presenter的逻辑。这个特性非常的有用,因为视图的变化总是比模型的变化频繁。
                   4、如果我们把逻辑放在Presenter中,那么我们就可以脱离用户接口来测试这些逻辑(单元测试)。    

         MVVM模式:

                     1. 低耦合。视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的"View"上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
                     2. 可重用性。你可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑。
                     3. 独立开发。开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xaml代码。
                     4. 可测试。界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。
下面我们说一下这三种模式的缺点:
         MVP模式:
                     Presenter中除了应用逻辑以外,还有大量的View->Model,Model->View的手动同步逻辑,造成Presenter比较笨重,维护起来会比较困难。
         MVC模式:
                     Controller测试困难。因为视图同步操作是由View自己执行,而View只能在有UI的环境下运行。在没有UI环境下对Controller进行单元测试的时候,应用逻辑正确是无法验证的:Model更新的时候,无法对View的更新操作进行断言。
View无法组件化。View是强依赖特点的Model的,如果需要把这个View抽出来作为一个另外一个应用程序可复用的组件就困难了,因为不同程序的Domain Model是不一样的。
         MVVM模式:
                     过于简单的图形界面不适用,或说牛刀杀鸡。对于大型的图形应用程序,视图状态较多,ViewModel的构建和维护的成本都会比较高。 数据绑定的声明是指令式地写在View的模板当中的,这些内容是没办法去打断点debug的。



可以看到,从MVC->MVP->MVVM,就像一个打怪升级的过程。后者解决了前者遗留的问题,把前者的缺点优化成了优点。同样的Demo功能,代码从最开始的一堆文件,优化成了最后只需要20几行代码就完成。MV*模式之间的区分还是蛮清晰的,希望可以给对这些模式理解比较模糊的同学带来一些参考和思路。

谢谢大家的支持^v^


       


Windows 11登录界面密码框消失Bug解析与解决方案 Windows操作系统登录认证机制是系统安全的第一道防线,其图形界面由桌面窗口管理器(DWM)负责渲染。当UI元素渲染异常时,会导致密码输入框等关键组件不可见。这类图形子系统故障通常源于驱动兼容性或主题服务冲突,在Windows 11最新累积更新后尤为常见。通过系统文件检查(sfc)、注册表修复或创建新用户等工程实践方法可有效解决问题。对于企业IT环境,建议采用PIN码或生物识别等替代认证方案,同时定期执行磁盘清理和系统健康检查等Windows维护操作,确保认证服务稳定运行。 阅读详情

相关推荐

GEOS-Chem笔记——模式下载安装+驱动数据+运行流程

看过我博客的会发现我写了很多CESM的笔记,但是说实话,平时科研我其实更多时候是GEOS-Chemuser。之所以写了很多CESM笔记,其实是因为不会,就边学边写。然后GEOS-Chem已经用比较熟了,所以也没想过做笔记啥的。但是我发现越来越多朋友私信我各种CESM问题,我觉得我可能给大家营造了一种我是CESM达人的错觉。感觉自己有点跑偏了呢。公平起见,我觉得我有必要补充点GEOS-Chem笔记。 GEOS-Chem是研究大气化学的人常用的大气化学传输模式,在全世界范围的大气化学研究组中被广泛使用。不过.

砍柴姑娘Jourosy的博客 1万+

mvc mvp mvvm比较以及区别

MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式。 软件中最核心的,最基本的东西是什么? 是的,是数据。我们写的所有代码,都是围绕数据的。 围绕着数据的产生、修改等变化,出现了业务逻辑。 围绕着数据的显示,出现了不同的界面技术。 没有很好设计的代码,常常就会出现数据层(持久层)和业务逻辑层还有界面代码耦合的情况。 ORM等框架,解耦合了业务

zhao_jing_bo的博客 1591

深入解析Android Thermal框架:从应用层到驱动层的温度管理机制

本文深入解析Android Thermal框架的温度管理机制,从应用层到驱动层详细介绍了温度监测、热状态评估和降温策略执行的全过程。通过分层架构解析和关键组件交互,帮助开发者理解Android设备如何实现高效的温度控制,确保硬件安全并优化性能。

weixin_29303701的博客 256

MVC, MVP, MVVM比较以及区别

MVC模式:MVC,Model View Controller,是软件架构中最常见的一种框架,简单来说就是通过controller的控制去操作model层的数据,并且返回给view层展示,具体见下图 当用户出发事件的时候,view层会发送指令到controller层,接着controller去通知model层更新数据,model层更新完数据以后直接显示在view层上,这就是MVC的工作原理。那

u014732103的博客 614

使用基于物质点法(MPM)的Anura3D模拟沙柱坍塌

本博客使用开源软件Anura3D软件模拟了一个沙柱坍塌的过程,这个软件是基于基于物质点法(MPM)设计的

weixin_59902634的博客 4043

别再为3D抓取发愁了!Halcon手眼标定保姆级教程(Eye-to-Hand模式,含完整代码)

本文提供Halcon手眼标定的保姆级教程,详细讲解Eye-to-Hand模式下的3D抓取实现方法。从硬件配置、坐标系系统到标定流程和核心算法,涵盖完整代码和实战经验,帮助用户快速掌握工业自动化中的精准抓取技术。

weixin_42523711的博客 269

mvc mvp mvvm的区别与联系_MVC,MVP,MVVM比较以及区别(上)

MVC,MVP,MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式,以前只是对他们有部分的了解,没有深入的研究过,对于一些里边的概念和区别也是一知半解。现在一边查资料,并结合自己的理解,来谈一些对于这三种模式思想的理解,以及他们的区别,欢迎大佬高手拍砖。阅读目录:1.MVC,MVP,MVVM诞生的需求?2.一段典型的耦合代码3.MCV模式 3.1 主动MVC 3.2 被动MVC 3.3...

weixin_34107887的博客 317

硬件即代码:用软件工程思维拆解F450无人机装配的模块化设计哲学

本文探讨了如何用软件工程思维重构DJI-F450无人机的模块化设计,将硬件装配提升为可编程系统。通过硬件抽象层、控制系统分层架构和扩展槽位设计模式,展示了无人机装配的模块化哲学,并结合实际案例说明如何优化性能与安全性。

weixin_29294975的博客 386

MVC,MVP,MVVM设计模式的比较

MVC,MVP,MVVM设计模式的比较

JackChan 4563

空天大模型详解

空天大模型是指面向空天信息领域(如卫星遥感、导航、气象等)设计的多模态人工智能模型,能够处理海量遥感数据、多传感器信息及跨时空分析任务。多模态融合:整合可见光、雷达、热红外、多光谱等多源遥感数据,构建统一表征空间,例如“空天·灵眸”3.0版支持航空、卫星及无人机数据的自动化解译。轻量化与高效推理:针对星载计算场景,采用分层量化、跨模态蒸馏技术压缩模型参数(如JigonGPT从1.02B压缩至0.23B,性能仅牺牲5.2%)18,并通过热传导架构提升计算速度2.4倍。神经符号结合。

zxy98的专栏 1567

本地部署AI应用:基于Google Gemini的banana-prompt快速上手指南

AI应用开发的核心在于将大模型能力集成到实际场景中,其原理是通过API调用将用户输入转化为模型可理解的指令,再由模型生成响应。这一技术价值在于降低AI应用开发门槛,实现数据本地化处理与隐私保护。在工程实践中,开发者常面临环境配置复杂、API集成繁琐等挑战。本文聚焦于使用banana-prompt工具包,通过TypeScript技术栈和npm包管理,快速在Windows本地部署基于Google Gemini API的AI应用。该方案特别适用于ai-prompts提示词工程和content-creation内容

weixin_27188815的博客 314

MVVM,MVC,MVP 比较

MVVM 是一种软件设计模式,用于构建用户界面。MVC 也是一种软件设计模式,用于构建用户界面。MVP 是一种软件设计模式,用于构建用户界面。

步子哥的博客 355

如何在MacBook上安装部署原生openclaw

本文介绍了在MacBook上安装OpenClaw的详细步骤:首先通过curl或国内镜像源安装nvm和Node.js(版本≥22),然后使用nvm安装Node.js 24并验证安装。接着通过脚本快速安装OpenClaw,完成安装后选择Qwen作为AI模型并进行OAuth认证。配置过程中可跳过联网搜索和Agent技能设置,最后选择Web界面作为呈现方式。安装完成后,系统会启动openclaw-gateway进程并打开Web界面,用户可通过简单的"hello"指令开始与AI对话。目前基础功能已

木简熙的博客 809

MVC MVP MVVM 架构比较

MVC,MVP和MVVM是软件比较常用的三种软件架构,这三种架构的目的都是分离,避免将过多的逻辑全部堆积在一个类中。

zhuozhulin的博客 1204

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

java mvp mvc区别,mvc mvp mvvm比较以及区别

MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式。软件中最核心的,最基本的东西是什么? 是的,是数据。我们写的所有代码,都是围绕数据的。围绕着数据的产生、修改等变化,出现了业务逻辑。围绕着数据的显示,出现了不同的界面技术。没有很好设计的代码,常常就会出现数据层(持久层)和业务逻辑层还有界面代码耦合的情况。ORM等框架,解耦合了业务逻辑和数据之间的耦合,业务逻辑不再关心底层数...

weixin_28273593的博客 538

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

MVC,MVP,MVVM的比较

关于详细内容我就不在此介绍了,有兴趣的朋友可以看下面的连接MVC,MVP,MVVM的比较这里我只记下一下本人觉得比较重要的地方。MVC缺点在Android开发中,Activity并不是一个标准的MVC模式中的Controller,它的首要职责是加载应用的布局和初始化用户 界面,并接受并处理来自用户的操作请求,进而作出响应。随着界面及其逻辑的复杂度不断提升,Activity类的职责不断增加,以致变得庞

Small_Lee的博客 384

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

android开发模式/框架比较分析:从MVC到MVP到MVVM到Clean

开发模式对比分析 MVC MVP MVVM MVPVM CLEAN 修改 3 4 5 5 5 新增 3 5 4 5 5 复用 3 4 4 4 5 单元测试 3 4 5 5 4 UI测试 4 4 4 4 4 学习成本 3 4 5 5 5 代码复杂度 3 4 5 5 5 实现复杂度 1 3 2 4 5 代码量 1 3 2 4 5 可读性 2 4 1...

qq_23081779的博客 5171

MVVM、MVC 和 MVP:架构模式的比较与应用

本文对比了MVVM、MVC和MVP三种主流架构模式。MVC将应用分为Model、View和Controller,适合Web和桌面应用;MVP用Presenter替代Controller,实现更彻底的解耦,便于测试;MVVM引入ViewModel和数据绑定,支持响应式编程,适用于现代Web和移动开发。三种模式各具优势:MVC结构清晰,MVP测试友好,MVVM开发高效。开发者应根据项目需求选择合适架构,平衡可维护性、扩展性和开发效率。文章通过Flask和Android示例代码展示了各模式的具体实现方式。

你若盛开,清风自来 716

MVC、MVP和MVVM的比较

自己的总结: MVC即模型--视图--控制器架构模式很好地解决了页面中数据层、视图层、业务逻辑层(控制器)之间的耦合关系。使它们得到显性的区分,这也使得层次之间的耦合度降低。我们在开发中可以不用顾忌所有需求而专注于某一层次开发,降低了开发与维护成本。因此对于大型页面系统的开发,三个层次各司其职。每一层专注于自己的事情,有利于工程化‘模块化开发并管理代码;’ MVP即模型--视图--管理器:Vi

ivolcano的博客 583

MVC, MVP, MVVM比较以及区别(上)

MVC, MVP和MVVM都是用来解决界面呈现和逻辑代码分离而出现的模式。以前只是对它们有部分的了解,没有深入的研究过,对于一些里面的概念和区别也是一知半解。现在一边查资料,并结合自己的理解,来谈一下对于这三种模式思想的理解,以及它们的区别。欢迎各位高手拍砖。 阅读目录: 一. MVC, MVP, MVVM诞生的需求? 二. 一段典型的耦合代码 三. MVC模式      3

weizhiai12的专栏 1万+

『Android基础入门』从Android开发的角度比较MVC,MVP,MVVM的优缺点

MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑、数据、界面显示分离的方法组织代码 将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。......

一个专注于客户端开发的技术er,不定期更新Android,Flutter,HormonyOS等方向的使用心得和感悟 5231

Android三种框架的比较——教你认清MVC,MVP和MVVM

相信大家对MVC,MVP和MVVM都不陌生,作为三个最耳熟能详的Android框架,它们的应用可以是非常广泛的,但是对于一些新手来说,可能对于区分它们三个都有困难,更别说在实际的项目中应用了,有些时候想用MVP的,代码写着写着就变成了MVC,久而久之就对它们三个的选择产生了恐惧感,如果你也是这样的人群,那么这篇文章可能会对你有很大的帮助,希望大家看完都会有收获吧!文章重点:(1)了解并区分MVC,...

qq_42442129的博客 4191
上一篇: Android弹幕功能实现,模仿斗鱼直播的弹幕效果
下一篇: Https的交互流程
deng_wei_csdn
博客等级 码龄10年 15粉丝 9原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值