Недавно я начал работать на Java и был представлен в диком и сумасшедшем мире геттеров и сеттеров для всего. Сначала я ненавидел его, но быстро привык к этому. Слишком привык к этому.Объекты объектов объектов и сеттеры для свойств данных
Я проводил много времени в последнее время, думая больше о дизайне класса. Одна из вещей, которую я пытаюсь сделать, - избегать ловушки делать геттеры и сеттеры для всего. Тем не менее, большая часть моей работы связана с объектами, которые в основном представляют собой контейнеры данных, и я не уверен, что в этих случаях геттеры и сеттеры на самом деле неуместны.
Вот простой пример использования общедоступных свойств.
class Space {
public String name;
public String description;
Space(final String name, final String description) {
this.name = name;
this.description = description;
}
}
Вот простой пример использования частной собственности и использования геттеров и сеттеров.
class Space {
private String name;
private String description;
Space(final String name, final String description) {
this.name = name;
this.description = description;
}
public String getName() {
return this.name;
}
public void setName(final String name) {
this.name = name;
}
public String getDescription() {
return this.description;
}
public void setDescription(final String description) {
this.description = description;
}
}
В этих примерах, как name
и description
поля должны быть в состоянии изменить.
Я чувствую, что пример геттера/сеттера более ясен и скрывает детали реализации того, что name
и description
есть. Это также позволило бы проверять позже, если это необходимо.
Я читал несколько дискуссий о том, что геттеры и сеттеры являются злыми и/или анти-паттернами, но действительно кажется, что они могут не применяться к этой ситуации.
Возможно, есть некоторые варианты, которые я еще не рассмотрел. Я открыт для предложений!
Я допускаю это, возможно, были ответ, который я искал. –
«со стороны» означает что? Если поля являются общедоступными, они доступны. Это больше похоже на C "struct". Если объект должен быть изменен и проблем с потоками нет, нет проблем. –