【发布时间】:2017-09-01 00:55:36
【问题描述】:
我正在设计一个非常大的系统,我将使用 C# 和 .NET Framework 4.6.2 来实现(但我认为这与我的问题无关)。
该系统将包含我可以在一台计算机上使用或不使用它的模块。例如,如果我使用我的系统跟踪相机读取的数据矩阵,我将使用一个模块来读取数据矩阵,但在另一个安装中我不会安装该模块,因为我不会读取数据矩阵。
简而言之,我的系统将是一个带有许多用户控件的 Windows 桌面应用程序,如果这些功能可用,我可以使用这些控件来管理一些功能。
所有这些模块都可以保存统计信息。例如,在有摄像头读取datamatrix的模块中我想存储datamatrix的数量,我在一分钟内读取了多少,读取datamatrix的错误等。这不是这个模块的功能,所以我需要创建管理此统计信息的另一个模块。
有时我会使用统计数据,但有时不会。因此,我需要一种机制来准备所有模块以使用统计模块:
- 添加对统计方法模块的调用以保存数据。
- 添加一种将统计模块插入另一个模块的方法,并且不执行任何其他操作来使用它。
简而言之,如果我有“插件”到datamatrix模块中,请添加一种使用统计模块的方法,如果我没有插件,请不要使用它。
如果我已插入,我需要做一些准备数据矩阵模块以使用统计模块,但如果我没有插入,请不要抛出任何错误。
我想我需要为统计模块实现一个接口,以及一种将该模块的实例添加到 datamatrix 模块的方法。并且,在 datamatrix 模块上,在使用前检查统计模块是否可用。
你怎么看?有没有一种模式可以做到这一点?
【问题讨论】:
-
您可能想要采用 OOP 方法,绝对是为了统计数据,它们会创建一些静态类并将它们放入库 (.dll) 中以供您共享方法
-
如果您的模块有接口,您只需为每个模块设置一个保存/加载并调用它
标签: c# design-patterns architecture software-design