我正在使用 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; } }