gpt4 book ai didi

java - 减少静态方法/变量和多个属性文件之间的代码重复

转载 作者:行者123 更新时间:2023-12-01 23:54:04 25 4
gpt4 key购买 nike

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

public class Env1 {

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

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

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

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

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

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

最佳答案

首先,您可以编写一个 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 也可以声明为枚举,其值为 FIRSTSECOND 等。

关于java - 减少静态方法/变量和多个属性文件之间的代码重复,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15868111/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com