GUI应用程序中的数据存储位置

本文关键字:存储 位置 数据 应用程序 GUI | 更新日期: 2023-09-27 18:00:19

我一直听说应该分离GUI/Data/Logic组件,比如MVC模式。所以,我想知道:在GUI应用程序中,数据实际上存储在哪里?

下面是一个例子(使用C#术语):
假设您有一个GUI,它接受用户输入,进行一些分析,并在表中显示结果
用户可以在一个窗口中进行多个分析,因此底部有一个ListView,允许用户选择当前显示的分析(显示所选项目)。

为了显示这一点,分析数据必须存储在某个地方
我总是做两件事中的一件:

  1. 将所有数据放入单个对象中,并将其存储在ListViewItem的"Tag"属性中
  2. 扩展"ListViewItem"并添加我需要的任何属性

但是,这意味着我将数据存储在ListViewItem中。是否有更合适的地方来跟踪数据?

我可以将其作为私人成员添加到主表单中,但这似乎是一样的。我唯一能想到的另一件事就是制作一些全局类,我可以在需要的时候参考

谢谢。

GUI应用程序中的数据存储位置

据我所知,您有一些ListViewItems。每个ListViewItem都与您的业务逻辑对象相关联,在选择其中一个ListViewItem后,您需要对该业务对象进行一些操作。在类似的情况下,我通常会制作类似的数据对象

struct MyDataObject
{
   string Id;//very often data object need to have Identifcator, but not always
   //some fields
}

并添加到用于典型用户输入的数据对象构造函数中。

之后,我使业务逻辑层包含此数据对象的可用算法。对于简单的项目,这是一个类似的静态类

static class MyDataObjectOperationService{
    void MakeSomething(MyDataObject myDataObject);
    object GetSomething(MyDataObject myDataObject);
    ...
}

对于通常为interface的大型项目。此外,我通常会制作一个数据层interface来获取这个数据对象。例如

interface IMyDataObjectRepository{
  IList<MyDataObject> GetAll();  
  MyDataObject GetById(string id);
  //CRUD operations if it need
}

之后,我将数据对象的id放入ListViewItems中,并在ListViewItemClick上获取选择id,然后使用数据层类按id获取DataObject,并使用业务逻辑层类进行一些操作。如果我需要保存DataObject更改或使用数据层类创建新的DataObject。