Когда использовать методы get / set в java [duplicate]

Я думаю, что главной причиной для программирования против интерфейсов является тестируемость. Следовательно, для объектов области - просто придерживаются POJOs или POC#Os:) и т.д., т.е. просто мешают Вашим классам добавлять любую определенную платформу так для предотвращения их от различной сборки и зависимостей во время выполнения, и это - все. Создание интерфейсов для ДАО является хорошей идеей все же.

24
задан mtk 28 May 2012 в 19:50
поделиться

5 ответов

Использование Getters / Setters против использования полей

Практическое правило:

используют переменные непосредственно из одного и того же класса (фактически из одного и того же файла .java, поэтому с внутренними классами все в порядке. тоже), используйте Getters / Setters из других классов.

37
ответ дан 28 November 2019 в 22:18
поделиться

В Java использование методов получения и установки обычно считается наилучшей практикой.

Это потому, что если вам когда-нибудь понадобится изменить свой код, чтобы он делал что-то еще, когда к свойству обращаются или изменяют его, вы можете просто изменить его в существующем методе получения или установки.

Я склонен думать, что это вызывает некоторую путаницу для простых объектов, но если вам когда-либо приходилось реорганизовывать открытое свойство в метод получения и установки для добавления дополнительных функций, вы увидите, что это может быть проблемой.

10
ответ дан 28 November 2019 в 22:18
поделиться

Методы получения и установки позволяют позже изменить реализацию (например, сделать что-то более сложное), реализовать правила проверки (например, setName выдает исключение, если имя не более 5 символов, что угодно.)

Вы также можете добавить геттер, но не сеттер, чтобы переменная была похожа на «только для чтения».

Это теория, однако во многих случаях (например, Hibernate с использованием сеттеров) вы не можете генерировать исключения в сеттерах, поэтому вы не можете выполнять какую-либо проверку. Обычно значение будет просто присвоено / возвращено. В некоторых компаниях, в которых я работал, было обязательным писать геттеры и сеттеры для всех атрибутов.

В этом случае, если вы хотите получить доступ к атрибуту извне объекта и хотите, чтобы он был доступен для чтения / записи, я просто использую открытый атрибут. Это меньше кода, и это означает, что вы можете написать что-то вроде obj.var += 5, которое легче читать, чем obj.setVar(obj.getVar() + 5).

3
ответ дан 28 November 2019 в 22:18
поделиться

Инкапсулируйте приватные поля класса и предоставьте их классам getter / setter так, как вы хотите.

0
ответ дан 28 November 2019 в 22:18
поделиться

Это дело вкуса, но, вообще говоря, вы всегда должны использовать методы get / set для всех общедоступных свойств. Но для таких вещей, как Value Objects (VO), которые вас, вероятно, не будут беспокоить в течение некоторого времени, вы можете использовать публичные переменные без особой критики.

1
ответ дан 28 November 2019 в 22:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: