Являются ли интерфейсы, содержащие только константы, антипаттерном? ⇐ JAVA

Программисты JAVA общаются здесь
Anonymous
Являются ли интерфейсы, содержащие только константы, антипаттерном?

Сообщение Anonymous »

Когда я работал с Hibernate, я нашел интересное решение с интерфейсами, которые содержат только поля констант (public static Final). У них много интерфейсов с константами и после этого они объединяют их с помощью наследования. Например, посмотрите эту ссылку

Код: Выделить всё

public interface JdbcSettings extends C3p0Settings, ProxoolSettings, AgroalSettings, HikariCPSettings {...}
Недавно я обнаружил, что это похоже на антишаблон, поэтому прочитал этот ответ:

Загрязнение пространства имен . Именованные константы появляются в пространстве имен
всех реализующих классов, а также их подклассов.

Это не наш случай, потому что мы говорим об интерфейсах, которые никогда не будет реализован.

Интерфейсы должны определять типы. В Java большинство основных типов
проекта должны быть представлены интерфейсами. Константный интерфейс по
по своей природе не определяет тип.

То же самое можно сказать и о классе.

Неинстантируемые классы со статическим импортом. Объявление констант как
статических конечных полей в классе (а не в интерфейсе) достигает всех
тех же целей, что и объявление их в интерфейсе. Это
не приведет к загрязнению пространства имен классом. При желании эти
константы можно использовать без уточняющего имени класса с помощью статического объявления
import.
Интерфейсы должны определять поведение. Предполагается, что интерфейс определяет
контракт между интерфейсом и реализующими его классами.
Предполагается, что реализация интерфейса что-то говорит о том, что
может делать класс. Константные интерфейсы не следуют этому шаблону.

Но классы в Java определяют схему создания объектов, инкапсулируя данные и поведение в единую сущность.
Насколько я понимаю, класс и интерфейс не должны были быть держателями констант. Но использование интерфейса дает гибкость при множественном наследовании.
Итак, мой вопрос: если мы используем интерфейс ТОЛЬКО для хранения констант, является ли это антишаблоном?

Подробнее здесь: https://stackoverflow.com/questions/791 ... ti-pattern

Вернуться в «JAVA»