1

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

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

为了显示这一点,分析数据必须存储在某个地方。
我一直在做以下两件事之一:

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

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

我可以将它作为私有成员添加到主表单中,但这似乎是一回事。我唯一能想到的另一件事是创建一些可以在需要时引用的全局类。

谢谢。

4

1 回答 1

1

据我了解,您有一些 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
}

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

于 2013-02-19T18:00:29.073 回答