以数据为中心的应用程序设计模式
本文关键字:应用程序 设计模式 为中心 数据 | 更新日期: 2023-09-27 18:02:09
我在决定如何构建一个应用程序时遇到了一点麻烦。
应用程序需要解析基于文本的文件(每行一条记录)并将所有信息加载到内存中。通常有10万到50万条记录。然后,数据必须以表格和非常详细的图形/图表的形式显示出来,以便进一步分析。
用户必须能够自定义该数据的视图。例如,日志记录有许多不同的"类型"(TypeA_Log, TypeB_Log等),用户应该能够选择/取消选择这些类型,这将在显示中显示/隐藏它们。还有几种其他类型的过滤(按日期过滤等)
,
实际上我现在得到的是:
我有一个类结构,表示各种类型的日志记录。
有一个Singleton模式来保存所有的数据(几乎像内存中的数据库),其中包括日志记录实例的Lists<>。
然后,我有一个"过滤器"类,其中包含有关用户想要查看的内容的信息。"过滤器"被传递到data - singleton中,然后返回数据的一个子集。我基本上使用c# lambda表达式从列表<>的日志记录中选择数据,类似于如何将select语句传递到SQL数据库。
,
这是工作的好,但我必须认为有一个更好的方法来处理这个。现在,只要用户做出哪怕是最小的更改(例如,选择/取消选择众多日志记录类型中的一种),就必须从data - singleton中检索一个新的数据集,然后必须刷新/重新绑定/重新计算所有的表和图表,以反映这个更改。在大多数情况下,我真正想做的是显示/隐藏某些东西。
您可以构建某种内部通知系统,也称为事件调度程序。
让我们说有一个记录在一个表单中改变,而不是重新加载其他依赖的表单,你触发一些记录已经改变的事件(附加一些自定义EventArgs的记录),并让你的依赖表单决定事件处理,他们应该在某个地方包括这个新记录。您可以在从属表单的集合中更新更改的数据。
但是,这会产生一些并发性问题(当您避免往返于数据库(在您的情况下是文本文件)时)…