浅析MVVM与MVC设计模式两者之间的优缺点

MVC的优缺点 MVC的优点: 1.耦合性低 视图层和业务层分离,这样就允许更改视图层代码而不用重新编译模型和控制器代码,同样,一个应用的业务流程或者业务规则的改变只需要改动MVC的模型层即可。因为模型与控制器和视图相分离,所以很容易改变应用程序的数据层和业务规则。 2.重用性高 MVC模式允许使用各种不同样式的视图来访问同一个服务器端的代码,因为多个视图能共享一个模型,它包括任何WEB(HTTP)浏览器或者无线浏览器(wap),比如,用户可以通过电脑也可通过手机来订购某样产品,虽然订购的方式不一样,但处理订购产品的方式. 阅读详情

MVC :

先说一下作为一个开发人员来说,众所周知的一个设计模式:MVC,

全称为:Model-View-Model.

主要目的:分离视图(View)和模型(Model).

 

想必我们用着已经非常习惯,但是他有存在一些问题,这是笔者想通过此文告诉大家的:

1.模型的代码少

2.控制器的代码却是越写越多

3.由于写的代码较多,故不好进行性能测试

 

 

MVVM :

全称:Model-View-ViewModel ,MVVM 模式和 MVC 模式一样,主要目的也是分离视图(View)和模型(Model)

 

概念:

1.在MVVM中,view与viewController正式联系在一起,我们可以把他们视为一个组件

2.在MVVM架构中,view与viewController均不能直接引用model,而是通过引用viewModel来间接引用model

3.很多人会问,viewModel是一个什么样的架构呢?里面应该放些什么样的东西呢?我们可以在viewModel中放置用户输入逻辑,视图显示逻辑及发送网络请求和其他一些代码

 

那么作为一种新型的架构模式,在使用时应该有哪些地方值得我们注意呢?

1.view 可以引用viewModel,但反过来却是不行

2.viewModel 可以引用model,但是反过来也不行

3.如果我们违背了上述规则,那么我们将会无法正常使用MVVM

 

MVVM自推出以后,便得到了大多数开发人员的认可,那么MVVC这种设计模式有什么优点呢?

1.低耦合:view/viewController可以独立于Model而进行变化和修改,与此同时,一个viewModel可以绑定到不同的view/ViewController上

2.可重用性:可以把一些视图逻辑放在一个ViewModel里面,让很多view/ViewController进行重用

3.独立开发:通过MVVM,开发人员可以专注于逻辑开发在viewModel里面,而设计人员也可以专注于页面设计,并且使用ExpressionBlend可以更加容易设计页面和生成XAML(Extensible Application Markup Language)代码.

4.可测试:通常来说,要进行,界面测试比较困难,而MVVM可以对viewModel进行测试.

相关推荐

【深度学习】肺结节分割项目实战二:分割肺实质

在后续训练模型的时候如果直接使用原始的肺部CT图像,其中的非肺区域会对训练造成干扰,因此我们需要提取分割肺实质。这一部分参考了kaggle上的教程。 从这张CT图像中可以看出扫描器以外的部分为黑色,背景和肺内部颜色较深,非肺组织和骨头颜色较浅。我们的目的是将肺部分割出来。由于肺部区域和其他部分对比明显,我们可以设置一个合适的阈值对图像中的区域进行隔离。 import argparse import os import numpy as np from medpy.filter.smoothing imp

weixin_42182906的博客 7242

MVVM模式与MVC模式的区别

在MVVM的框架下,视图和模型不能直接通信的,他们通过ViewModel来通信,ViewModel通常实现一个observer观察者,当数据发生变化,ViewModel能够监听到数据的这种变化,然后通知对应的视图作自动更新,而当用户操作视图,ViewModel也能监听到视图的变化,然后通知数据做改定,这实际就显示了数据双向绑定。,视图可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。

fgujkkoiuyt_的博客 699

Springer期刊LaTeX模板中参考文献格式选择与编译错误的快速修复指南

本文针对Springer期刊LaTeX模板中参考文献编译后显示问号的常见问题,提供了快速修复指南。核心在于正确选择并配置与期刊匹配的参考文献格式文件(.bst),并执行标准的四步编译流程。文章详细解释了问题根源,并给出了从查找正确.bst文件到修改代码、执行编译的完整解决方案,帮助作者高效解决投稿中的技术障碍。

weixin_29266007的博客 402

MVVM与MVC设计模式

实际开发过程中,已经有很多地方要用到MVVM架构模式,而传统的MVC设计模式也随着开发的复杂性逐渐的被MVVM所取代,或许以后还会推出更好的设计模式,但不可否认的是,就目前来说,MVVM引领了这段潮流.所以,对于MVVM的使用,我们必须了解.

shiios的博客 1689

C#安装OpenCv及打开笔记本默认摄像头方法

C#安装OpenCv及打开笔记本默认摄像头方法

cg1135217680的博客 2572

Score Matching(得分匹配)

Score Matching(得分匹配)是一种统计学习方法,用于估计概率密度函数的梯度(即得分函数),而无需知道密度函数的归一化常数。这种方法由Hyvärinen在2005年提出,主要用于无监督学习,特别是在密度估计和生成模型中。

weixin_39699362的博客 2168

[架构之路-195]-《软考-系统分析师》- MVC、MVP、MVVM架构各自的优缺点

一个controller对应多个view,model可以直接通过view。一个Presenter对应一个view,model不能通过view一个ViewModel可以对应多个View,model不能通过view。一、MVC1.1 MVC的基本结构MVC(Model-View-Controller)是桌面开发中常见的软件架构。标准的MVC架构图如下:Model(模型):外部数据库接口负责业务数据管理和处理,包括增删改查。Model必须提供外部可以操作模型数据的接口,同时在数据发生变化后能够通知外部。

文火冰糖(王文兵)的博客 2182

【土壤普查实战】Python+ArcGIS随机森林模型一键生成土壤类型栅格图

本文详细介绍了如何利用Python和ArcGIS结合随机森林模型实现土壤类型栅格图的自动化生成,大幅提升土壤普查效率。通过环境准备、数据预处理、模型构建与调优等关键步骤,帮助用户掌握从样本点生成到最终栅格图输出的完整流程,适用于大面积区域或样本点较多的土壤分类任务。

weixin_29229989的博客 219

MVVM模式的优点以及与MVC模式的区别

MVC模式 MVC是应用最广泛的软件架构之一,一般MVC分为:Model(模型),View(视图),Controller(控制器)。 这主要是基于分层的目的,让彼此的职责分开.View一般用过Controller来和Model进行联系。Controller是Model和View的协调者,View和Model不直接联系。基本都是单向联系。 Model: 模型(用于封装与应用程序的业务逻辑相关的数...

weixin_43680581的博客 6676

一篇文章足够你学习Bluez,提供史上最全的Bluez教程,让你告别Bluez从入门到放弃

Bluez是真的难,说“入门到放弃”真的毫不夸张,Bluez的学习曲线陡峭,要求对Linux 系统/驱动概念、D-Bus 通信和蓝牙协议都有要求,加上网络上其实没有一个完整的介绍Bluez系列的文档,所以不管是蓝牙初学者还是蓝牙从业人员,都有不小的难度。

朝气蓬勃 2541

反爬虫:对抗最新反爬技术 Cloudflare详解

本文针对Cloudflare最新反爬机制提供完整解决方案,覆盖TLS指纹、行为轨迹、设备指纹等检测场景。文章首先分析Cloudflare的三重检测体系(TLS指纹、行为指纹、设备指纹)及其拦截表现,随后提出四种绕过方案:1)使用curl_cffi模拟浏览器TLS指纹;2)通过undetected-chromedriver移除自动化特征;3)Playwright结合stealth插件模拟人类行为;4)动态请求调度策略。重点推荐轻量级Python方案curl_cffi和浏览器自动化方案Playwright-st

数据知道的博客 4627

iOS 设计模式 浅析MVC、MVP、MVVM

一、MVC (Model、View、Controller) 苹果官方推荐的架构模式(MVC),最核心的就是通过Controller层来进行控制,首先看一下官方提供的MVC示意图,如下图所示: 1、MVC各层职责 1.1、controller层 生成view,然后组装view 响应View的事件和作为view的代理 处理view的生命周期 处理界面之间的跳转 调用model的数据获取接口,拿到返回数据,处理加工,渲染到view显示 1.2、model层 业务逻辑封装 提供数据接口给controller

清幽竹客 2308

智能车图像处理16-进阶篇8--右环岛状态机与补线

这篇文章主要讲述智能车竞赛中如何判断右环岛并且进行状态补线。

taiyuezyh的博客 1万+

浅析前端开发中的 MVC/MVP/MVVM 模式

浅析前端开发中的 MVC/MVP/MVVM 模式 网上看到的资料,感觉文章很好,记录分享下: 链接:浅析前端开发中的 MVC/MVP/MVVM 模式 后续再加上自己的理解和示例。 未完,待续 ...

Jacoh的专栏 680

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

lwip-2.0.3

lwip是瑞典计算机科学院(SICS)的Adam Dunkels 开发的一个小型开源的TCP/IP协议栈。实现的重点是在保持TCP协议主要功能的基础上减少对RAM 的占用。

【日常交流】浅析MVC、MVP和MVVM

MVC MVC是最常见的组织架构,由View(视图),Controller(控制器)和Model(模型)组成。 View(视图):负责视图展示,将Model中的数据可视化出来。 Controller(控制器):负责业务逻辑,根据用户行为对Model数据进行修改。 Model(模型):负责保存应用数据,与后端数据进行同步。

胡振涛 352

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

MVC、MVP、MVVM模式浅析

一、什么是MVC(Model View Controller)模式? 1、为了使得视图接口可以与模型和控制器进行交互,控制器执行一些初始化事件 2、用户通过视图(用户接口)执行一些操作 3、控制器处理用户行为(可以用观察着模式实现)并通知模型进行更新 4、模型引发一些事件,以便将改变发告知视图 5、视图处理模型变更的事件,然后显示新的模型数据 6、用户接口等待用户的进一步操作 ...

qq_32619837的博客 177

浅析前端MVC、MVP、MVVM模式

MVC是一种架构设计,通过关注点分离鼓励改进应用程序组织,其强调将业务数据(model)和用户界面(view)隔离,用第三部分控制器(controller)管理逻辑和用户输入。MVC其实是早期软件开发大牛想实现关注点分离时提出来的,后来也被广泛的使用在软件设计开发中,随着web大行其道,逐渐有人在web前端开始使用MVC模式,但很多框架其实更像是使用了MVC的变种MV*。

allenliu6的博客 1263

MVC、MVVM、MVP 框架设计模式浅析

传统模式下的开发 MVC MVVM 基于面向协议MVP的介绍 MVP实战开发 说在前面: 相信就算你是个iOS新手也应该听说过MVC的,MVC是构建iOS App的标准模板。随着时间的推移,在iOS平台上MVC也逐渐开始面临着越来越多的问题,最近又开始流行MVVM,MVVM使由MVC衍生而来,MVVM作为一种新的开发模式和响应式编程相结合用来解决一部分业务场景等,今天,我要介绍给大家的是

rare_ice的博客 1096

浅析MVC,MVP和MVVM架构

MVC,MVP和MVVM的面试回答

专注于苹果IOS开发和最新资讯 251

【Vue】笔记四:浅析Vue三种开发模式:MVC、MVP、MVVM

首先明确一点:开发模式≠设计模式 开发模式:一个开发项目的方式或标准,RMVC 比较常见的三种开发模式:MVC、MVP、MVVM 1、MVC (个人感觉重点在View) MVC全名是Model View Controller,是模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑(C)、数据(M)、界面显示(V)分离的方法组织代码,将业务逻辑聚集到一个部件里面,在改进和个性化定制界面及用户交互的同时,不需要重新编写业务逻辑。 用户可以..

weixin_55846296的博客 4287

MVC/MVP/MVVM浅析

MVC Model-View-Controller (MVC) 体系结构模式将应用程序分成 3 个主要组件组:模型、视图和控制器。 Model: 不依赖用户界面,直接管理数据,逻辑和应用的规则。管理应用的数据,从controller接收用户的输入。 View:一切信息的输出显示都能被称为View,比如图表;同一信息可能有多个Views,比如表格等。以特定的形式显示Model。 Controller...

weixin_34403693的博客 100

浅析MVC、MVP、MVVC的异同

MVC,MVP,MVVM

Dax1_的博客 3062

浅析Android开发中的-MVC-MVP-MVVM-模式

其实客户端开发的知识点就那么多,面试问来问去还是那么点东西。所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。然而Android架构学习进阶是一条漫长而艰苦的道路,不能靠一时激情,更不是熬几天几夜就能学好的,必须养成平时努力学习的习惯。贵在坚持!《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》点击传送门,即可获取!所以面试没有其他的诀窍,只看你对这些知识点准备的充分程度。so,出去面试时先看看自己复习到了哪个阶段就好。

2401_84010816的博客 695

浅析WPF中MVVM模式下命令与委托的关系

各位朋友大家好,我是Payne,欢迎大家关注我的博客,我的博客地址是http://qinyuanpei.com。最近因为项目上的原因开始接触WPF,或许这样一个在现在来讲显得过时的东西,我猜大家不会有兴趣去了解,可是你不会明白对某些保守的项目来讲,安全性比先进性更为重要,所以当你发现银行这类机构还在使用各种“复古”的软件系统的时候,你应该相信这类东西的确有它们存在的意义。与此同时,你会更加深刻地明白

素履独行 | 元培的个人博客 6068
上一篇: Netty从零开始(二)
下一篇: Angular 6正式版发布,都有哪些新功能
hxpjava1
博客等级 码龄19年 1365粉丝 511原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值