Les Enums VS Classes VS Interfaces

J'ai lu beaucoup de messages sur ce site concernant l'utilisation de constantes.

Question:
Quand devrais-je utiliser les Énumérations pour les constantes, vs en utilisant des classes ou des interfaces.

Je vois 2 situations clés, je suis à la recherche d'adresse.

1. Les Constantes globales utilisées dans des applications par de multiples projets.

Exemple:

  • Commune de journalisation des chaînes
  • Contenant des références comme une base de données de la cartographie de référence utilisé dans les
    WebSphere OREILLE

2. L'Objet Spécifique Des Constantes

Exemple:

  • Employé les taux de salaire pour un Employé de l'Objet

De tout ce que j'ai lu c'est ce que je pense avoir une emprise sur, et ce que je suis à la recherche d'un avis sur.

Pour la situation 1:
Approche de conception: Utilisation d'une classe finale et statiques import.
Vu ici: Qu'est-ce que l'utilisation de l'interface constantes?

Pour La Situation 2:
Approche de conception: Appliquer l'utilisation des Énumérations pour représenter ces constantes comme un objet.

Autres points à retenir:

  • Si la constante de chaîne appartient à la classe et vous avez seulement besoin de la chaîne de valeur de la garder dans la classe qui l'utilise
  • Ne pas utiliser une Interface pour la situation 1. Comme mentionné dans le lien ci-dessus comme une Constante de l'Interface Anti-modèle.
    .

Merci d'avance pour les pensées et les opinions.

Les chaînes sont déjà immuable, donc il n'est pas nécessaire de les stocker dans les énumérations. Les noms de Page ne semble pas être trop statique, et depuis il n'y a aucun moyen d'étendre les enums en cours d'exécution, vous pourriez être mieux par des cordes. La base de données de références ne semblent plus ou moins statique, mais je présume qu'ils sont habituellement représentés par des chaînes de caractères. Il semble y avoir aucun besoin de les énumérer. Assurez-vous de la conception d'une application avec un enum comme une option, pas une obligation.

OriginalL'auteur haju | 2011-05-26