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

Java 如何实现静态项目范围的首选项系统?,java,inheritance,static,Java,Inheritance,Static,我想做以下工作:在静态部分,我有一堆类在加载时读取属性XML文件。有些文件甚至共享一个属性文件,因此让它们重复加载同一个文件是愚蠢的 我想创建一个singleton类,将已加载的属性文件实例返回给任何请求它的类。到目前为止,一切都很简单 但是,我有几个需要加载的文件,因此自然的想法是编写一个静态基类来处理读取文件的操作,然后通过让每个子类实现一个位置获取类方法,对每个子类的细节进行对象定向 然后,我了解到没有静态继承之类的东西 如何在不依赖静态继承的情况下实现这一点 一个选项是使用一个抽象方法实

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

我想创建一个singleton类,将已加载的属性文件实例返回给任何请求它的类。到目前为止,一切都很简单

但是,我有几个需要加载的文件,因此自然的想法是编写一个静态基类来处理读取文件的操作,然后通过让每个子类实现一个位置获取类方法,对每个子类的细节进行对象定向

然后,我了解到没有静态继承之类的东西


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

一个选项是使用一个抽象方法实现一个抽象基类,扩展程序需要实现一个指定位置获取类方法的抽象方法

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

公共抽象类BaseReader{
公共列表读取文件(){
//这里有共同的阅读逻辑
}
公共抽象字符串getXmlFileLocation();//子类实现此
}

一个选项是使用扩展程序需要实现的指定位置获取类方法的抽象方法实现抽象基类

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

公共抽象类BaseReader{
公共列表读取文件(){
//这里有共同的阅读逻辑
}
公共抽象字符串getXmlFileLocation();//子类实现此
}

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


我还将重新考虑使用单例模式。您可能可以使用依赖项注入将您的首选项接口注入到任何需要它的类中。例如,考虑Spring通过Apple上下文提供MasigeService接口的方式。p> 如何指定要加载的文件?是否可以指定多个文件而不仅仅是一个


我还将重新考虑使用单例模式。您可能可以使用依赖项注入将您的首选项接口注入到任何需要它的类中。例如,考虑Spring通过Apple上下文提供MasigeService接口的方式。p> 你确定你需要遗产吗?听起来你只需要一个类来加载属性,并将要加载的文件作为参数。问题是不同的设置文件控制不同的功能,我不想将所有设置都放在一个文件中。这样,每个包或类集都可以由一个设置类管理,而实现另一个设置类所需做的唯一事情就是通过给基类一个具体位置来对其进行子类化。您确定需要继承吗?听起来你只需要一个类来加载属性,并将要加载的文件作为参数。问题是不同的设置文件控制不同的功能,我不想将所有设置都放在一个文件中。这样,每个包或类集都可以由一个设置类来管理,而实现另一个设置类所需做的唯一事情就是通过给它一个具体的位置对其进行子类化。
public abstract class BaseReader {
  public List<Property or whatever> readFile() {
    // common reading logic here
  }

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

}