《深入浅出WPF》学习笔记五.Mvvm设计模式

news2024/9/30 3:24:18

《深入浅出WPF》学习笔记五.Mvvm设计模式

背景

在通过视频学习wpf的过程中,讲师花了不少篇幅来讲Mvvm。特地在此用自己的语言总结一番,方便以后面试回答,如有理解不对,欢迎指正哈。

Mvvm结构

Mvvm指的是Model+View+ViewModel

为什么要使用Mvvm?

团队层面:统一思维方式和实现方法;

不同人的思维和写法都不一样,统一设计模式,可以减少沟通成本,让代码不至于千人千面

架构层面:稳定、解耦、富有禅意

重点说一下解耦,View和Model层解耦,使用数据驱动view层;View层和后台可以各司其职

代码层:可读、可测、可替换

可读性:Mvvm模式可以让开发知道每块逻辑去哪里找;

可测:View和Viewmodel后台逻辑可以各测各的;

可替换:View和后台逻辑解耦,所以View可以更容易替换

什么是Model?

对现实世界事物的抽象结果(同Class)

什么是View和ViewModel?

View:UI层

ViewModel:Model for View

ViewModel是View层和Model层之间的桥梁,ViewModel层向View层提供其所需要的数据,同时处理View层传过来的命令并提供结果。

ViewModel层有点像业务逻辑层。

View和ViewModel层之间的沟通

1.传递数据:依赖属性

2.传递操作:命令属性

Mvvm和Mvc的区别是什么?

不同点:

1.Mvvm具有数据绑定,Mvc没有需要Controller来处理View和Model之间的交互;

2.Mvc由于Controller中含有业务逻辑更难测试;

3.Mvc使用清晰分离逻辑和表示的场景,Mvvm适用于高度交互和动态更新的场景;

相同点

1.Mvvm(ViewModel)和Mvc(Controller)都通过中间层来处理业务逻辑;

结语

Mvvm是wpf的一种重要的设计模式,但Wpf不一定非要使用Mvvm。具体情况具体分析。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1980124.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

《网络安全自学教程》- MySQL匿名用户的原理分析与实战研究

《网络安全自学教程》 低版本的MySQL数据库在安装时会创建一个用户名和密码为空的账户,也就是匿名账户。即使升级到高版本,匿名账户仍然会存在。 MySQL匿名账户 1、检查是否存在匿名账户2、检查用户权限3、创建匿名账户4、使用匿名账户登录5、删除匿名账…

医院管理系统

医院管理系统 本文所涉及所有资源均在传知代码平台可获取 文章目录 医院管理系统概述使用技术核心功能1. 登录与注册2. 管理员系统3. 患者系统(医院电子平台)4. 医生系统(坐诊系统) 部署与启动适用场景 概述 本项目是一个专为大学…

读零信任网络:在不可信网络中构建安全系统09用户信任

1. 用户信任 1.1. 将设备身份和用户身份混为一谈会导致一些显而易见的问题 1.1.1. 特别是当用户拥有多台设备时,而这种情况很普遍 1.1.2. 应该针对不同类型的设备提供相匹配的凭证 1.1.3. 在存在共用终端设备的情况下,所有的这些问题将更加凸显 1.2…

打造未来交互新篇章:基于AI大模型的实时交互式流媒体数字人项目

在当今数字化浪潮中,人工智能(AI)正以前所未有的速度重塑我们的交互体验。本文将深入探讨一项前沿技术——基于AI大模型的实时交互式流媒体数字人项目,该项目不仅集成了多种先进数字人模型,还融合了声音克隆、音视频同步对话、自然打断机制及全身视频拼接等前沿功能,为用…

Python中使用正则表达式

摘要: 正则表达式,又称为规则表达式,它不是某种编程语言所特有的,而是计算机科学的一个概念,通常被用来检索和替换某些规则的文本。 一.正则表达式的语法 ①行定位符 行定位符就是用来描述字符串的边界。"^&qu…

第十三节、人物属性及伤害计算

一、碰撞器层级剔除 选中player和敌人,即可去除 若勾选触发器,则会取消掉碰撞效果,物体掉落 二、人数属性受伤计算 1、创建代码 将两个代码挂载到玩家和敌人身上 2、调用碰撞物体的方法 3、伤害值 开始:最大血量即为当前血量…

Arduino PID库 (6):初始化

Arduino PID库 (6):初始化 参考:手把手教你看懂并理解Arduino PID控制库——初始化 Arduino PID库 (5):开启或关闭 PID 控制的影响 问题 在上一节中,我们实现了关闭和打开PID的功…

最小二乘法求解线性回归问题

本文章记录通过矩阵最小二乘法,求解二元方程组的线性回归。 假设,二维平面中有三个坐标(1,1)、(2,2)、(3,2),很显然该三个坐标点不是…

React(三):PDF文件在线预览(简易版)

效果 依赖下载 https://mozilla.github.io/pdf.js/getting_started/ 引入依赖 源码 注意:pdf文件的预览地址需要配置代理后才能显示出来 import ./index.scss;function PreviewPDF() {const PDF_VIEWER_URL new URL(./libs/pdfjs-4.5.136-dist/web/viewer.html, im…

12.SpringDataRedis

介绍 SpringData是Spring中数据操作的模块,包含对各种数据库的集成,其中redis的集成模块就叫做SpringDataRedis。 spring的思想从来都不是重新生产,而是整合其他技术。 SpringDataRedis的特点 1.提供了对不同redis客户端的整合&#xff08…

8.4 day bug

bug1 忘记给css变量加var 复制代码到通义千问,解决 bug2 这不是我的bug,是freecodecamp的bug 题目中“ 将 --building-color2 变量的颜色更改为 #000” “ 应改为” 将 #000 变量的颜色更改为 --building-color2 “ bug3 又忘记加var(–xxx) 还去问…

渗透小游戏,各个关卡的渗透实例

Less-1 首先,可以看见该界面,该关卡主要是SQL注入,由于对用户的输入没有做过滤,使查询语句进入到了数据库中,查询到了本不应该查询到的数据 首先,如果想要进入内部,就要绕过,首先是用…

C#中的TCP和UDP

TcpClient TCP客户端 UDP客户端 tcp和udp的区别 TCP(传输控制协议)和UDP(用户数据报协议)是两种在网络通信中常用的传输层协议,它们在C#或任何其他编程语言中都具有相似的特性。下面是TCP和UDP的主要区别:…

MySQL的基本使用

文章目录 MySQL的基本使用什么是SQLSQL学习目标SQL的SELECT语句SQL的INSERT INTO语句 SQL的UPDATE语句SQL的DELETE语句 SQL的WHERE子句可在WHERE子句中使用的运算符SQL的AND和OR运算符SQL的ORDER BY子句SQL的COUNT(*)函数 在项目中操作数据库的步骤安装mysql模块配置mysql模块测…

微服务设计原则——易维护

文章目录 1.充分必要2.单一职责3.内聚解耦4.开闭原则5.统一原则6.用户重试7.最小惊讶8.避免无效请求9.入参校验10.设计模式11.禁用 flag 标识12.分页宜小不宜大参考文献 1.充分必要 不是随便一个功能都需要开发个接口。 虽然一个接口应该只专注一件事,但并不是每个…

摩托罗拉刷机包和固件下载地址

发现了一个非常好的摩托罗拉刷机包和固件下载地址:https://firmware.center/ 里面包含了所有的摩托罗拉的刷机包和软件、电路图等等,非常多,我想镜像到本地网盘,但不知道怎么操作,有没有懂得朋友教我全部镜像到国内的…

Kafka生产者(二)

1、生产者消息发送流程 1.1 发送原理 在消息发送的过程中,涉及到了两个线程——main 线程和 Sender 线程。在 main 线程中创建了一个双端队列 RecordAccumulator。main 线程将消息发送给 RecordAccumulator,Sender 线程不断从 RecordAccumulator 中拉取…

Gamma AI:一键生成专业级PPT的智能工具

1. Gamma 简介 Gamma 是一个致力于通过非常简单的ai交互,制作好的视觉体验作品,它始终站在作者的视角新增功能,同时注重观众视角呈现作品。 突破了以往演示文档(ppt、pdf、网站)表现形式,能够借助ai的力量…

informer中的WorkQueue机制的实现分析与源码解读(1)

背景 client-go中的workqueue包里主要有三个队列,分别是普通队列Queue,延时队列DelayingQueue,限速队列RateLimitingQueue,后一个队列以前一个队列的实现为基础,层层添加新功能。 workqueue是整个client-go源码的重点…

每日学术速递8.5—1

1.SV4D: Dynamic 3D Content Generation with Multi-Frame and Multi-View Consistency 标题: SV4D:具有多帧和多视图一致性的动态 3D 内容生成 作者:Yiming Xie, Chun-Han Yao, Vikram Voleti, Huaizu Jiang, Varun Jampani 文章链接&…