我一直听说你应该分开GUI / Data / Logic组件,比如MVC模式。 所以,我想知道:在GUI应用程序中,您实际存储数据的位置是什么?
这是一个例子(使用C#术语):
假设您有一个GUI,它接受用户输入,进行一些分析,并在表格中显示结果。
用户可以在一个窗口中进行多次分析,因此底部有一个ListView,允许用户选择当前显示分析(显示所选项目)。
为了显示这一点,分析数据必须存储在某处。
我总是做两件事之一:
但是,这意味着我将数据存储在ListViewItem中。 是否有更适合跟踪数据的地方?
我可以将它作为私有成员添加到主窗体中,但这看起来是一样的。 我能想到的唯一另一件事就是制作一些我可以随时参考的全球课程。
感谢。
答案 0 :(得分:1)
据我所知,你有一些ListViewItems。每个ListViewItem都与您的业务逻辑对象相关联,并且在选择ListViewItem之一后,您需要对此buisness对象进行一些操作。在类似的情况下,我通常将数据对象设为
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,之后使用数据层类获取DataObject,并使用业务逻辑层类进行一些操作。如果我需要保存DataObject更改或使用数据层类创建新的DataObject I.