Полагаю, он справляется со своей задачей, но, как однажды сказал друг: «Вы можете попробовать вытереть пол осьминогом; он может выполнить работу, но это не тот инструмент».
Интерфейсысуществуют для указания контрактов, которые затем реализуются классами.Когда я вижу интерфейс, я предполагаю, что есть некоторые классы, которые реализуют его.Поэтому я склонен сказать, что это пример злоупотребления интерфейсами, а не использованием их , просто потому, что я не думаю, что именно так должны были использоваться интерфейсы.
Полагаю, я не понимаю, почему эти значения общедоступны, если они просто будут использоваться в классе в частном порядке.Почему бы просто не переместить их в класс?Теперь, если эти значения будут использоваться группой классов, то почему бы не создать enum
?Другой шаблон, который я видел, - это класс, который просто содержит публичные константы.Это похоже на шаблон, который вы описали.Однако класс можно сделать окончательным, чтобы его нельзя было расширять;ничто не мешает разработчику реализовать ваш интерфейс.В этих ситуациях я просто склонен использовать enum
.
ОБНОВЛЕНИЕ
Это был ответ на комментарий, но потом он стал длинным.Создание интерфейса для хранения только одного значения еще более расточительно!:) Для этого вы должны использовать частную константу.Хотя помещать несвязанные значения в одно перечисление плохо, вы можете сгруппировать их в отдельные перечисления или просто использовать частные константы для класса.
Кроме того, если кажется, что все эти классы совместно используют эти несвязанные константы (ночто имеет смысл в контексте класса), почему бы не создать абстрактный класс, в котором вы определяете эти константы как protected
?Все, что вам нужно сделать, это расширить этот класс, и ваши производные классы будут иметь доступ к константам.