假设我有多个几乎相同的属性文件
public class Env1 {
protected static String PROPERTIES_FILE = "some/path1";
protected static Properties props;
public static String getPropertyA
...
public static String getPropertyZ
}
e.g。我有20个这样的环境文件,并且所有getPropertyA通过getPropertyZ方法都是相同的,只是每个环境文件的PROPERTIES_FILE都不同。
我有几个完全相同的20个环境文件,因为它们分别绑定到20种不同的枚举类型,但属性略有不同。
从代码中的任何位置调用这些环境属性都很方便,而无需实例化它们。
有没有办法减少这个20倍的代码重复,而不必将静态成员变量转换为实例成员变量?
答案 0 :(得分: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
等。