GUI应用程序中的数据存储位置
本文关键字:存储 位置 数据 应用程序 GUI | 更新日期: 2023-09-27 18:00:19
我一直听说应该分离GUI/Data/Logic组件,比如MVC模式。所以,我想知道:在GUI应用程序中,数据实际上存储在哪里?
下面是一个例子(使用C#术语):
假设您有一个GUI,它接受用户输入,进行一些分析,并在表中显示结果
用户可以在一个窗口中进行多个分析,因此底部有一个ListView,允许用户选择当前显示的分析(显示所选项目)。
为了显示这一点,分析数据必须存储在某个地方
我总是做两件事中的一件:
- 将所有数据放入单个对象中,并将其存储在ListViewItem的"Tag"属性中
- 扩展"ListViewItem"并添加我需要的任何属性
但是,这意味着我将数据存储在ListViewItem中。是否有更合适的地方来跟踪数据?
我可以将其作为私人成员添加到主表单中,但这似乎是一样的。我唯一能想到的另一件事就是制作一些全局类,我可以在需要的时候参考
谢谢。
据我所知,您有一些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。