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

devtools/2024/10/23 5:25:55/

《深入浅出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.ppmy.cn/devtools/89069.html

相关文章

大数据应用【大数据导论】

各位大佬好 ,这里是阿川的博客,祝您变得更强 个人主页:在线OJ的阿川 大佬的支持和鼓励,将是我成长路上最大的动力 阿川水平有限,如有错误,欢迎大佬指正 目录 大数据在许多领域应用互联网领域应用生物医学…

算法通关:016:设计循环双端队列

文章目录 题目思路代码运行结果问题为什么能直接调用方法名 题目 leetcode641 设计循环双端队列 思路 代码 import java.util.Deque; import java.util.LinkedList;/*** Author: ggdpzhk* CreateTime: 2024-08-03* 641 双端队列:利用双向链表和动态数组实现*/ pu…

java:File与MultipartFile互转

1 概述 当我们在处理文件上传的功能时,通常会使用MultipartFile对象来表示上传的文件数据。然而,有时候我们可能已经有了一个File对象,而不是MultipartFile对象,需要将File对象转换为MultipartFile对象进行进一步处理。 在Java中…

【leetcode详解】另一棵树的子树 (C++递归:思路精析 过程反思)

思路详解: 总体框架: 对root树进行先序遍历,如果当前结点(记为cur)的值和subRoot的根节点值相等时,就开始判断 以cur为根节点的树 和 子树 是否结构一样? 如何判断两棵树是否结构完全相同? …

图论:1857. 有向图中最大颜色值(拓扑排序+动态规划)

文章目录 1.问题分析2.代码解析2.1 代码步骤1. 初始化数据结构2. 构建图和入度数组3. 初始化队列4. 拓扑排序和动态规划5. 检查是否存在环并返回结果 3. 问题扩展1. 最长路径问题(DAG)2. 最短路径问题(DAG)3. 最大路径和问题4. 路…

ValueListenableBuilder 和 addListener 在 ChangeNotifier的区别

1、前言 ValueListenableBuilder 和 addListener 在 ChangeNotifier 中有不同的用途和用法,适用于不同的场景。它们的主要区别在于它们如何监听和响应状态变化,以及它们的用法和特性。 2、ValueListenableBuilder用法 ValueListenableBuilder 是一个 …

MATLAB在科研领域的重要性

引言 MATLAB(Matrix Laboratory)是由MathWorks公司开发的高性能编程语言及其交互环境,广泛应用于科研领域。其强大的计算能力、丰富的工具箱、便捷的编程环境和高效的数据可视化功能,使其成为科学研究中的重要工具。本文将详细探…

备战秋招:2024游戏开发入行与跳槽面试详解

注意:以下为本次分享概要,视频版内容更全面深入,详见文末 1.游戏开发领域秋招准备与面试技巧 本次分享由优梦创客机构的创始人雷蒙德主讲,专注于2024年秋招期间游戏开发领域的入行与跳槽面试准备。本次分享重点在于提供面试技巧…