Я использую java.util.Properties
для проекта, над которым я работаю. У меня есть класс, который управляет файлом .properties с экземпляром Properties
, который называется PropertiesManager
. Этот класс управляет загрузкой и сохранением файла .properties с диска.Инкапсулирование java.util.Properties доступа через методы доступа, которые считаются плохой практикой?
Теперь, поскольку я хотел убедиться, что можно получить доступ только к действительным свойствам и значения по умолчанию использовались всякий раз, когда свойство не находится в файле, я добавил геттеры и сеттеры для каждого свойства файла.
Проблема в том, что класс PropertiesManager
очень большой. Только получатели и сеттеры (с комментариями/пустые строки) составляют 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 напрямую, а не использовать методы доступа? Есть ли другое решение?
Иисус! Такая же идея, я был слишком медленным :( – jensgram
Спасибо за отличный ответ! Это решение удовлетворяет всем моим требованиям и очень элегантно! – ConveniencePatterns