首页 > 其他分享 >浅谈MVVM开发思想

浅谈MVVM开发思想

时间:2022-08-19 19:01:04浏览次数:81  
标签:浅谈 思想 ViewModel 视图 MVVM 后台 Model View

IT流行语:程序=算法+数据结构。还有一句话,程序 = 输入数据 -> 数据处理 -> 输出数据。
如果以编程语言理解这句话,算法是方法,数据结构就是变量的组织形式,那么这句话可以理解为:程序 = 方法 + 变量。变量的组织形式是数据结构,不同的组织形式占用不同的内存存储空间和影响方法使用数据的效率。方法所使用的算法不同,执行的效率不同。程序员的追求是,采用最佳的数据结构组织变量,采用最佳的算法构成方法,得出期望的正确的输出结果。
MVVM是Model-View-ViewModel的缩写,它旨在UI开发中分离解耦视图和业务逻辑,最终达到不动业务逻辑的前提下,美化甚至更换视图。
控制台程序,没有一个用户可以观测程序运行状况,控制程序运行的接口,后台的变量赋值和方法调用都是以黑盒形式运行,它就像一个只有ViewModel和Model的后台应用程序。UI开发增加View层,通过数据绑定,可以观测后台变量的值,为后台变量赋值;通过命令,用户可以通过鼠标和键盘操作View,去触发后台调用执行方法;通过消息可以让后台影响View的视图效果。最终利用MVVM,可以观测后台程序的执行情况,有机会控制后台的执行流程,后台也可以改变视图效果展示给用户。
MVVM的优点如下:

  1. 低耦合:视图(View)可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变。
  2. 可重用性:可以把一些视图逻辑放在一个ViewModel里面,让很多View重用这段视图逻辑。
  3. 独立开发:开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计,使用Expression Blend可以很容易设计界面并生成xml代码。
  4. 可测试:界面素来是比较难于测试的,而现在测试可以针对ViewModel来写。
  5. 后台代码不掺杂UI元素,视图层不包含业务逻辑

image

使用MVVM思想开发的应用程序一般会有4个文件夹,分别是Views,ViewModels,Models,Services。物理目录也反映了分层解耦的思想。

标签:浅谈,思想,ViewModel,视图,MVVM,后台,Model,View
From: https://www.cnblogs.com/LiuwayLi/p/16593920.html

相关文章

  • 浅谈 Raft 分布式一致性协议|图解 Raft
    前言本篇文章将模拟一个KV数据读写服务,从提供单一节点读写服务,到结合分布式一致性协议(Raft)后,逐步扩展为一个分布式的,满足一致性读写需求的读写服务的过程。其中将配合引......
  • Harley浅谈Hadoop(HDFS)
     一、HDFS概述 1.1、HDFS产出背景及定义 1.1.1、HDFS产生背景   随着数据量越来越大,在一个操作系统存不下所有的数据,那么就分配到更多的操作系统管理的磁盘......
  • 浅谈 Exgcd 和同余问题
    \[\large\text{本以为学的是数学专题,实际上学的是}\]\[\huge\stackrel{\text{xuán}}{\textbf{数}}\textbf{学专题}\]玄学专题\(\Huge\textbf{1}\\small\text{Exgcd(扩......
  • 【DS】浅谈树状数组倍增
    无意中看到的一个小trick,便记录下来。引入给您一个数组,您需要实现以下操作和询问:\(\bullet\)插入一个数字\(x\)。\(\bullet\)查询排名为\(k\)的数\(x\)。......
  • openssh-浅谈openssl和openssh的升级
    最近项目上有服务器漏洞被扫描出来,是关于openssl的之前没怎么关注过这个问题,于是着手去了解了以下发现有些坑,分享下自己的经验。中间过程比较长,想省事的直接跳到第四节,......
  • 面向对象思想的概述和面向对象思想的举例
    面向对象思想的概述 面向过程:当需要实现一个功能的时候,每一个具体的步骤都要亲力亲为,详细处理每一个细节面向对象:当需要实现一个功能的时候,不关心具体的步骤,而是找一个......
  • 编程思想
    1.防御式编程1.1墨菲定律墨菲定律:如果有两种或两种以上的方式去做某件事情,而其中一种选择方式将导致灾难,则必定有人会做出这种选择。墨菲定律主要内容:任何事都没有......
  • CommunityToolkit.Mvvm-IOC
    CommunityToolkit.Mvvm未内置IOC,可以使用Microsoft.Extensions.DependencyInjection.在App中注册ViewModel和其他服务publicpartialclassApp:Application{pub......
  • Community.MvvmToolkit教程
    通知单个属性值改变不传参privatestring_firstName;publicstringFirstName{get{return_firstName;}set{_firstName=value;......
  • Spring核心思想Ioc和Aop (面试)
    Spring核心思想Ioc和Aop(面试)注意:Ioc和Aop并不是Spring提出的,在Spring之前就已经存在,Spring只是在技术层面给这两个思想做了非常好的实现。1Ioc1.1下面谈谈你是......