如何实现静态项目范围的偏好系统?

问题描述:

我想要做以下事情:我有一堆在加载时读取属性XML文件的静态部分的类。有些文件甚至共享一个属性文件,所以让他们重复加载同一个文件是很愚蠢的。如何实现静态项目范围的偏好系统?

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

但是,我有几个需要加载的文件,所以自然会想到编写一个静态基类来处理读取文件,然后通过让对象定位每个子类的详细信息他们只是实现一个位置获取类的方法。

然后,我才知道,有没有这样的东西作为静态继承...

我如何能实现这一点没有依靠静态的继承?

+0

您确定您需要继承吗?这听起来像你所需要的只是一个加载属性的类,并将该文件作为参数加载。 – nos 2011-01-10 18:00:47

你是如何指定文件被加载?是否可以指定多个文件而不只是一个文件?

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

一种选择是用抽象方法实现一个抽象基类,Extenders需要实现该抽象方法来指定位置获取类方法。

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

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

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

}