以数据为中心的应用程序设计模式

时间:2011-07-15 23:49:49

标签: c# oop design-patterns

我在决定如何构建我正在构建的应用程序时遇到一些麻烦。

应用程序需要解析基于文本的文件(每行一条记录)并将所有信息加载到内存中。通常有100,000到500,000条记录。之后,数据必须以表格和非常详细的图表/图表的形式显示,以便进一步分析。

用户必须能够自定义此数据的视图。例如,日志记录有许多不同的“类型”(TypeA_Log,TypeB_Log等)。用户应该能够选择/取消选择这些类型,这些类型将在显示中显示/隐藏它们。还有其他几种类型的过滤(按日期过滤等)

-

基本上我现在拥有的是:

我有一个表示各种类型日志记录的类结构。

有一个Singleton模式来保存所有数据(几乎像内存中的数据库),其中包括Lists<>日志记录实例。

然后,我有一个“过滤器”类,其中包含有关用户想要查看的内容的信息。 “过滤器”被传递到Data-Singleton,然后返回数据的子集。我基本上使用C#lambda表达式从List<>中选择数据。日志记录,类似于将SELECT语句传递给SQL数据库的方式。

-

这工作正常,但我不得不认为有更好的方法来解决这个问题。现在,只要用户进行最小的更改(例如,选择/取消选择多种类型的日志记录中的一种,就必须从Data-Singleton中检索新的数据集,然后所有的表格和图表都有要刷新/重新计算/重新计算以反映这种变化。在大多数情况下,我真正想做的就是显示/隐藏某些事情。

我正在使用C#.NET 3.5。

1 个答案:

答案 0 :(得分:0)

您可以构建某种内部通知系统,也称为事件调度程序

让我们说在一个表单中更改了记录,而不是重新加载其他依赖表单,您触发一些记录已更改的事件(使用一些自定义EventArgs附加记录),并让您的依赖表单决定事件处理应该他们在某处包含了这条新记录。您可以更新从属表单集合中已更改的数据。

但是,这可能会产生一些并发问题(当您避免使用数据库(在您的情况下为文本文件)时)...