我正在寻找有关如何为我的 java 程序管理许多不同参数设置的具体想法。我知道这个问题有点分散,但我需要一些关于大局的想法,以便我的代码变得更易于维护。
我的项目所做的是对数据执行许多处理步骤,主要是文本。这些处理步骤是具有不同复杂性的算法,通常具有许多设置。我还想更改配置文件使用的处理步骤。
我的程序的原因是进行可重复的实验,因此我需要能够完整地查看代码不同部分中使用的所有参数,最好是采用良好的格式。
在这个(原型)阶段,我在源代码中有如下设置:
public static final param1=0.35;
并且负责某些处理步骤的每个类都有自己的硬编码设置。这实际上是相当可怕的,因为没有简单的方法来改变事物,甚至无法查看做了什么以及使用了哪些参数/设置。
我的想法是为所有设置提供一个中央键/值存储,它也支持所有设置的转储。例子:
k:"classA_parameter1",v:"0.35"
k:"classC_parameter5",v:"false"
但是,我真的不想将参数存储为字符串,而是将它们与实际的 java 类或对象相关联。
拥有一个管理一切的单例“SettingsManager”是否更聪明。或者在 main 可以访问的每个类中都有一个 SettingsManager 对象?我不太喜欢存储设置的字符串描述,但我看不到任何其他方式(假设一个设置是使用的 SAXparser 实现,另一个参数是双精度,例如百分比),因为我真的不想存储它们作为对象并投射它们。
非常感谢有关相关设计模式的经验和页面链接。
为了澄清,我的实验可以被视为一系列处理来自文件/数据库的数据的算法。这些算法根据它们在整个过程中的任务分为不同的类,例如
Experiment //main
InternetLookup //class that controls e.g. web scraping
ThreadedWebScraper
LanguageDetection //from "text analysis" package
Statistics //Calculate and store statistics
DatabaseAccess
DecisionMaking //using the data that we have processed earlier, make decisions (machine learning)
BuildModel
Evaluate
每个最低级别的类都有参数并且是不同的,但我仍然想要了解正在发生的一切。