Перечисления VS Классы VS Интерфейсы

Я читал много сообщений на этом сайте, касающихся использования констант.

Вопрос: When should I use Enums for constants, vs using classes or interfaces.

I see 2 key situations I am looking to address.

1. Global Constants used in a applications by multiple projects.

Example:

  • Common logging strings
  • Container references like a database mapping reference used in WebSphere EAR's

2. Object Specific Constants

Example:

  • Employee pay rates for an Employee Object

From everything I have read this is what I think I have a grasp on and what I am looking for an opinion on.

For situation 1: Design Approach: Use a final class and a static import.
Seen here: What is the use of interface constants?

For Situation 2: Подход к проектированию: используйте перечисления для представления этих констант в виде объекта.

Дополнительные моменты, которые следует запомнить:

  • Если постоянная строка принадлежит классу, и вам нужно сохранить только строковое значение в классе, который его использует
  • Не используйте интерфейс для ситуации 1. Как упоминалось в ссылка выше как Constant Interface Anti-pattern. .

Заранее благодарю за мысли и мнения.

15
задан Community 23 May 2017 в 11:44
поделиться