我正在为我正在处理的项目使用 java.util.Properties
。我有一个管理带有 Properties
实例的 .properties 文件的类,称为 PropertiesManager
。此类管理从光盘加载和保存 .properties 文件。
现在,因为我想确保只能访问有效的属性,并且当属性不在文件中时使用默认值,所以我为文件的每个属性添加了 getter 和 setter。
问题是 PropertiesManager
类变得非常大。仅 getter 和 setter(带有注释/空行)就是 300 行代码。因此,即使我将加载/保存转移到另一个类(继承等)中,它仍然很大。
这不是实际的代码,但它给了你想法:
import java.util.Properties;
public class PropertiesManager {
private Properties properties;
public PropertiesManager() {
// constructor
}
private void save() {
// save in .properties file
}
private void load() {
// load from .properties file
}
public String getPropertyName1() {
return properties.getProperty("PropertyName1", "Property1DefaultValue");
}
// 28 more getters here
public String getPropertyName30() {
return properties.getProperty("PropertyName30", "Property30DefaultValue");
}
public void setPropertyName1(String value) {
properties.setProperty("PropertyName1", value);
}
// 28 more more setters here
public void setPropertyName30(String value) {
properties.setProperty("PropertyName30", value);
}
}
像这样封装您对 Properties 实例的访问是否被认为是不好的做法?我应该直接使用 Properties 实例而不是使用访问器方法吗?还有其他解决方案吗?
最佳答案
我只想将其更改为使用枚举的单个 getter/setter:
public class PropertiesManager {
...
public String getProperty(EnumProp enumProp) {
return properties.getProperty(enumProp.getKey(), enumProp.getDefaultValue());
}
public void setProperty(EnumProp enumProp, String value) {
properties.setProperty(enumProp.getKey(), value);
}
}
有了这个枚举:
public enum EnumProp {
PROP_1("key", "defaultValue"),
...
EnumProp(String key, String defaultValue){
this.key = key;
this.defaultValue = defaultValue;
}
}
关于java - 通过访问器方法封装 java.util.Properties 访问被认为是不好的做法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41894374/