mvvm软件架构 个人见解

news/2024/9/25 19:08:17

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace MVVM
{
    //MVVM框架—— Vm层——

///


    /// 主体框架是  数据  ViewModel---》dataservice----》config-----》各个模块
    ///                  ViewModel是全局单列 在这个类里面有成员 dataservice  这个对象里面有各个仪表对象,其中config这个类又是全部仪表构造函数要传的参数,就是各个仪表的里面都有一个config这个类的对象
    ///                  
    ///      ui层  ViewModel这个类里面new出各个ui层的对象,相当于这个类里面就有各个ui的变量 这些变量在ui后台binding ui ui类的构造函数要传dataservice对象进去,就是说,ui在ViewModel里new的时候 把ViewModel类里的dataservice对象传进去。ui类里面是有一个dataservice对象的
    ///      
    /// 数据处理的流程 在仪表或者数据有动画后(动作,接收等)通过 各个仪表的里面的config对象里面的委托调用,在ui类里面把函数注册进去,这样就实现了model到view的数据传递
    /// 
    ///

    public class ViewModel //这个类是框架的开始部分,也就是枢纽,从这个类开始,一边是ui,一边是数据处理   也就是  一边是m 一边是 v
    {
        public static ViewModel Instance = new Lazy(() => new ViewModel()).Value;//把这个类生成一个单例,到时候所有的类都可以访问这个类,也都是通过这个类进行控制的《那个线》的连接

public ViewModel()
        {

FdataService = new DataService();//在vm构造里面new出数据类
            VM1.start = true;//这个只是激活vm1  这个也就是ui类,没有直接new的情况是为了节省软件打开的时候的性能,在用的到时候直接激活,具体写法参考.net 8.0,实际使用是在用到的地方直接使用属性就会激活这个类

}

private DataService FdataService;//数据类,这个是所有具体业务或者叫模块,仪表,功能的类
        public DataService DataService { get { return FdataService; } }//暴露给外面

public bool start;//实列的时候的属性,没有其他的具体意义

public VM1 VM1 => Fvm1 ??= new VM1(FdataService);//暴露属性,使用的时候激活   这个就是ui数据,在xaml里面 binding  
        private VM1 Fvm1;

public VM2 VM2 => Fvm2 ??= new VM2(FdataService);//这个就是ui数据,在xaml里面 binding  ui的构造函数要将数据类传进去
        private VM2 Fvm2;

}
}

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

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

相关文章

mini-lsm通关笔记Week2Overview

Week 2 Overview: Compaction and Persistence在上周,您已经实现了LSM存储引擎的所有必要结构,并且您的存储引擎已经支持读写接口。在本周中,我们将深入探讨SST文件的磁盘组织,并研究在系统中实现性能和成本效益的最佳方法。我们将花4天时间学习不同的compaction策略,从最…

001-什么是VOQ

1、什么是VOQ(Virtual Output Queues)? VOQ(虚拟输出序列)是一种存储结构,由FIFO与RAM以及逻辑结构组合构成。在一些数据应用场景中能够有效存储数据并且能够及时输出,避免阻塞。一句话来说VOQ的优点在于:共享存储,较少存储资源,避免数据阻塞,提高数据输出效率。 2、…

MIT6.824 课程-Aurora

Aurora原文:https://xie.infoq.cn/article/09849d56c3b18064af6c7f857 搬运用于参考学习ABSTRACT Amazon Aurora 是一个关系型数据库服务,其作为 Amazon Web Services(AWS)的一部分为 OLTP 业务提供服务。本文描述了 Aurora 的体系结构以及设计该结构时的一些思考。我们认为高…

pl/sql小技巧

pl/sql中文乱码 select userenv(language) from dual cmd命令行 set NLS_LANG=AMERICAN_AMERICA.ZHS16GBK pl/sql拖到cmd窗口下执行 pl/sql 显示行号pl、sql字体大小调整

结对项目-四则运算

github链接这个作业属于哪个课程 班级的链接这个作业要求在哪里 作业要求的链接这个作业的目标 实现四则运算自动生成程序,结对协作开发姓名 学号柳浩 3122004444洪吉潮PSP表格PSP2.1 Personal Software Process Stages 预估耗时(分钟) 实际耗时(分钟)Planning 计划 20 25Esti…

java作业

要求做几道练习题,体会java一些比较细的知识点 1. • 第一行输出false是因为这行代码比较两个枚举变量s和t是否引用同一对象。s被赋值为Size.SMALL,而t被赋值为Size.LARGE。由于它们引用不同的枚举实例,所以输出为false。 • 第二行输出false是因为这行代码首先通过s.getCla…

基于Sentinel自研组件的系统限流、降级、负载保护最佳实践探索

一、Sentinel简介 Sentinel 以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度保护服务的稳定性。 Sentinel 具有以下特征: •丰富的应用场景:Sentinel 承接了阿里巴巴近 10 年的双十一大促流量的核心场景,例如秒杀(即突发流量控制在系统容量可以承受的范围)、…