gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-03 16:43:25 25 4
gpt4 key购买 nike

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

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

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

--

基本上我现在拥有的是:

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

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

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

--

这工作正常,但我不得不认为有更好的方法来处理这个问题。现在,任何时候用户即使做出最小的更改(例如,选择/取消选择多种类型的日志记录中的一种,都必须从 Data-Singleton 中检索新的数据集,然后所有的表格和图表都有刷新/重新绑定(bind)/重新计算以反射(reflect)此更改。在大多数情况下,我真正想做的就是显示/隐藏某些内容。

我正在使用 C# .NET 3.5。

最佳答案

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

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

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

关于c# - 以数据为中心的应用程序的设计模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6714294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com