使用静态配置类的良好实践?

时间:2012-11-14 19:03:50

标签: java android

在我正在开发的项目中,我有很多配置设置。

之类的东西
  • 闹钟时间
  • 要从服务器检索的项目数
  • LocationManager整数,例如minium location

这些都是静态final,并且都在与值对应的类中。

我的问题是,将所有这些值移动到单个静态类是否有任何问题?

我的想法是,在测试和推文应用时,它会更容易管理。

5 个答案:

答案 0 :(得分:1)

我很确定你没有谈论常数,因为你提到闹钟时间。

在专用类中仅使用静态字段的问题是,如果设备处于内存压力下,则可以对类进行垃圾回收。在这种情况下,当你再次使用它们时,它们就会丢失并重置。

因此,您应该考虑将它们保存在文件或数据库中,具体取决于您要存储的数据量。 SharedPreferences对于少量数据非常有用,否则,请考虑使用数据库。这是一个更具可扩展性的解决方案,对于更大的数据集,访问时间更好。

答案 1 :(得分:1)

以@Snicolas的回答为基础......

您确实应该在代码(文件或数据库)之外保留CONFIGURATION设置。但是,每次需要值时,您都不应该“读取”该配置,这将是低效的。

使用类来管理配置(即AppSettings)是个好主意。使其静态是提供类似单一访问的一种方法。在C#和ASP.NET中,Web应用程序将保证静态类的一个且仅一个实例,因此来自不同用户的多个不相关请求将共享完全相同的静态值。

但是在你的情况下(我看到标签'android')使用Java你最好的选择可能是Singleton方法。我不知道Java中的垃圾收集是如何工作的,但我会说你应该使用单例来确保你的设置只有一个实例。单例确保实例存在(或者如果不存在则创建一个实例),然后将其提供给调用者。

这也可以让您更轻松地支持在应用运行时更改配置值的功能 - 您可以“观察”定期更改设置。

我不是一个Java人,但如果还没有用于处理这个问题的库,我会感到惊讶(不是没有)。

答案 2 :(得分:0)

在Rails世界中,最好实现一个懒惰地加载和缓存配置信息的配置模型类,这些配置信息以序列化形式持久存储在一个简单的两列(密钥和串行数据值)表中(或者不常用) )一个平面文件。然后,配置编辑器就是此模型的View。

这也应该是Android中的一个很好的解决方案。

答案 3 :(得分:0)

另一个想法是将这些常量存储在properties文件中。并在需要时加载常量。 http://viralpatel.net/blogs/loading-java-properties-files/

答案 4 :(得分:-1)

如果你觉得方便,这是一个很好的做法。