0

假设我有多个几乎相同的属性文件

public class Env1 {

    protected static String PROPERTIES_FILE = "some/path1";
    protected static Properties props;

    public static String getPropertyA
    ...
    public static String getPropertyZ
}

例如,我有 20 个这样的环境文件,所有 getPropertyA 到 getPropertyZ 方法都是相同的,只是每个环境文件的 PROPERTIES_FILE 都不同。

我有这 20 个几乎相同的环境文件,因为它们每个都与 20 个不同的枚举类型相关联,它们的属性略有不同。

并且可以方便地从代码中的任何位置调用这些环境属性,而无需实例化它们。

有没有办法减少这 20 倍的代码重复,而不必将静态成员变量转换为实例成员变量?

4

1 回答 1

3

首先,您可以编写一个Env类来封装所有属性操作并消除代码重复。这是一个骨架:

public final class Env {

    public static final PropertiesHolder FIRST = new PropertiesHolder("path/properties1.file");
    public static final PropertiesHolder SECOND = new PropertiesHolder("path/properties2.file");
    ...

    public static class PropertiesHolder {

        private final String path;
        private final Properties properties;

        public PropertiesHolder(String path) {
            ...
        }

        public String getPropertyA() {
            ...
        }

        public String getPropertyB() {
            ...
        }
    }
}

然后从您的代码中,您可以像这样使用它:

Env.FIRST.getPropertyA();
Env.SECOND.getPropertyB();

我不认为这是一个很好的使用模式(因为我倾向于static只在真正需要时使用),但至少你不会有 20 个几乎相等的类。

Env也可以用值等声明为FIRST枚举SECOND

于 2013-04-07T21:54:04.023 回答