Как это называется?Это шаблон дизайна или соглашение?(Интерфейсы / классы) - PullRequest
2 голосов
/ 14 декабря 2011

В последнее время, когда я смотрел на другой код, я заметил, что вижу один файл с несколькими интерфейсами и классами, иногда расширяя эти интерфейсы.

Как это называется? Это хорошая / плохая практика?

Кроме того, если это хорошая практика, есть ли документация о том, как правильно это использовать? Если нет, то есть ли какая-либо другая документация по использованию интерфейсов, наиболее эффективных и рекомендуемых для них?

Здесь используется только одно место: Google IoSched

Ответы [ 4 ]

3 голосов
/ 14 декабря 2011

Это выглядит как перечисления с использованием шаблона интерфейсов (или, скорее, анти-шаблон).Теперь, когда Java имеет перечисления и статический импорт , нет никаких причин использовать это.

2 голосов
/ 14 декабря 2011

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

Они также существуют в JSE, например, Map.Entry .

1 голос
/ 14 декабря 2011

Термин для класса, который является членом другого класса, является вложенным классом .Как объясняется в руководстве, это делается по нескольким причинам:

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

Этот метод часто используется, когда вложенный класс тесно связан с вмещающим классом.(Например, Map.Entry - это вложенный класс Map и Character.UnicodeBlock - это вложенный класс Character .)

Вложенные интерфейсы выполняют одну и ту же функцию - определяют интерфейс, тесно связанный с классом включения.

0 голосов
/ 14 декабря 2011

Это внутренние интерфейсы (которые по своей природе являются статическими внутренними интерфейсами, даже если они явно не помечены модификатором static. Они используются для определения интерфейса, который так тесно связан с классом, который он определил внутри, что он не стоит определять его вне этого класса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...