所以我在Java中为Accumulo
构建各种索引和摄取类但我的问题并没有直接关系。
我有一个属性文件,存储了一个很长的列表(比方说有二十几个并且正在增长)的关键字和数据库表名。
现在当我的主类被实例化时,我将所有这些属性读入其相关的String对象并在整个过程中使用它们。但是,其中一些项目需要传递下来,有时是大块,下到其他类。
我认为我的选择是
我很担心这一点,因为过去我主要是嵌入式和小规模系统的C ++开发人员。这是我的第一个大型项目之一,所以我试图从一开始就做好事。我已经有了一堆书籍,包括设计模式,只是为了让我的脚湿透,但任何一般的编程实践知识库我都很乐意接受建议。
我试图将这种概括化,以便其他人可以受益,但可能需要更多细节,请告诉我。
答案 0 :(得分:0)
选项(2)似乎是一种很好的方法。
这种变体的一种变体是将主要Properties对象中的所有字符串提取到单独的Properties(或HashMap)对象中,可能基于元素名称的前缀。因此,类Foo
获取名称前缀为foo.
的所有属性,类Bar
获取所有bar.xxx
属性,依此类推。
这使属性在逻辑上(和物理上)保持独立的集合,并为给定的类提供它所需的那些属性。如果所有类都需要共享公共属性(可能是那些带有all.
或global.
前缀的属性,或者根本没有前缀,那么可以将这些属性添加到每个单独的Properties对象中。
答案 1 :(得分:0)
您的复杂程度要求您直接处理java.util.Properties文件。
这是一个简单的对象,它应该根据您的需要进行扩展。我不建议将您的属性映射到Java对象,因为您最终会不断更改映射文件;你需要只有java.util.Map才能提供的完全灵活性。
顺便说一句,你需要这个,这听起来不正确。可能有一个全球设计问题需要在您的应用程序中重新考虑。此外,json解决方案可能还不错,因为在分层树中构建属性可能有助于降低配置文件的复杂性,但我再次避免将json对象映射到Java对象,因为模型是主题经常改变(据我所知)。
您可能会尝试在配置属性之间找到“模式”,并尝试提取某些组织。一旦你猜到配置中内置了一些好的“业务对象”,就可以将配置减少到这些对象的数组。
JSON听起来很适合我。您的问题可以看作是“复杂配置”的原型,这种情况并不少见(想想maven中的pom.xml)。所以我认为你需要两件事:
答案 2 :(得分:0)
Commons Configuration有几项功能可以帮助您整理