如何实现静态项目范围的首选项系统?

时间:2011-01-10 17:47:55

标签: java inheritance static

我想要执行以下操作:我有一堆类在加载时读取属性XML文件,在静态部分中。有些文件甚至共享一个属性文件,因此让它们重复加载相同的文件是愚蠢的。

我想创建一个单例类,它将已经加载的Properties文件实例返回给任何请求它的类。到目前为止,这么简单。

但是,我有几个这样的文件需要加载,所以自然的想法是编写一个静态基类来处理读取文件,然后通过使用它们来对象定向每个子类的细节只需实现一个位置获取类方法。

然后,我了解到没有静态继承......

如何在不依赖静态继承的情况下实现这一点?

2 个答案:

答案 0 :(得分:1)

您如何指定要加载的文件?是否可以指定多个文件而不仅仅是一个文件?

我还会重新考虑使用单例模式。您可以使用依赖注入将Preferences接口注入任何需要它的类。例如,考虑Spring通过其ApplicationContext提供MessageSource接口的方式。

答案 1 :(得分:0)

一种选择是使用扩展器需要实现的抽象方法来实现抽象基类,该抽象方法指定了位置获取类方法。

示例:(请原谅简单的方法名称)

public abstract class BaseReader {
  public List<Property or whatever> readFile() {
    // common reading logic here
  }

  public abstract String getXmlFileLocation(); // subclasses implement this

}