2012-05-11 1 views
0

У нас есть два различных (может быть гораздо больше) способы, чтобы получить доступ к x variabel:Что я должен использовать?

example.x и example.getX()

Я думаю, что первый очень быстро, но мы не можем использовать, что в некоторых случаях (для пример e.getX(), когда мы обрабатываем события окна).

Вопрос: следует ли использовать только example.getX() вместо example.x везде, или комбинация этих способов лучше?

+5

Вам необходимо пройти инкапсуляцию полей. Http://en.wikipedia.org/wiki/Field_encapsulation – Habib

+2

Действительно ли проблема здесь? Если нет, и я подозреваю, что это не так, то не позволяйте скорости быть определяющим фактором. –

+1

Как вы думаете, вы получите тонну скорости, сохранив одну запись в стеке методов? – adarshr

ответ

2

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

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

Обратите внимание, что для того, чтобы класс считался Java-компонентом, он должен иметь публичные сеттеры/геттеры для каждого поля (между прочим). Разумеется, это применимо только на Java, поэтому на самом деле это не причина при рассмотрении вопроса в агностическом контексте языка.