Пожалуйста, прочтите, прежде чем направлять меня в подобные сообщения, Я спрашиваю об очень конкретном c case :
Зачем использовать геттеры и сеттеры / аксессоры?
Какая польза от инкапсуляции, когда я могу изменять значения свойств с помощью методов установки?
Возьмем, например, приложение JAVA JEE , это в основном веб-сайты. Веб-сайт вашего банка, вероятно, представляет собой JAVA JEE-приложение.
В них мы, как правило, команда из 10-15 разработчиков, никто, кроме нас, не использует наш код, никто не импортирует наш пакет и не использует наши объекты.
Бэкэнд обычно имеет DAO для доступа к базе данных и объекты Value для передачи данных на уровень представления.
VO являются точными копиями сущностей, например:
publi c class UserVo {
private String name;
private String email;
private String password;
public UserVo(String name, String email, String password) {
this.name = name;
this.email = email;
this.password = password;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getEmail() {
return email;
}
public void setEmail(String email) {
this.email = email;
}
public String getPassword() {
return password;
}
public void setPassword(String password) {
this.password = password;
}
}
Итак, вы получаете объект, вы конвертируете его в VO для «разделения слоев» (в чем я тоже не вижу смысла, потому что если вы измените объект, вы измените VO, затем вы измените код на уровне представления, который использует это VO, но что угодно)
Прежде всего, VO предполагается неизменяемым, но во всех проектах, над которыми я работал поскольку они изменчивы.
Мой вопрос: есть ли здесь преимущество иметь геттеры / сеттеры?
Внутри нет logi c, некоторые скажут вам, что сеттер может выполнить некоторую проверку, но это бесполезно, потому что весь наш код протестирован на модулях поэтому нет необходимости проверять что-либо в установщиках.
Поскольку все свойства имеют get / set, это точно так же, как если бы они были опубликованы c.
При изменении реализации геттер / сеттер также изменяются, и весь код, который использует старый геттер / сеттер, подвергается рефакторингу / модификации.
Я часто узнать о сокрытии данных, что пользователь не сможет получить доступ к частной собственности: что? пользователь просматривает веб-сайт.
Итак, почему все так привязаны к этим геттерам / сеттерам? если я использую свойства publi c вместо этих геттеров / сеттеров, меня будут высмеивать, все будут говорить что-то вроде «разве вы не знаете об инкапсуляции», «у вас НИКОГДА не должно быть полей publi c»
Я считаю, что это бесполезно, но все так делают, потому что так всегда делали, и никто никогда не спрашивает об этом.
Я ошибаюсь?
Спасибо.