Mes suggestions (par ordre décroissant de préférence):
1) Ne le fais pas . Créez les constantes dans la classe réelle là où elles sont les plus pertinentes. Avoir une classe / interface «sac de constantes» ne suit pas vraiment les meilleures pratiques OO.
Moi et tout le monde, nous ignorons le n ° 1 de temps en temps. Si vous allez faire cela, alors:
2) classe finale avec constructeur privé Cela empêchera au moins quiconque d'abuser de votre «sac de constantes» en l'étendant / l'implémentant pour avoir un accès facile aux constantes. (Je sais que tu as dit que tu ne ferais pas ça - mais ça ne veut pas dire que quelqu'un vient après toi)
3) interface Cela fonctionnera, mais pas ma préférence en donnant la mention d'abus possible au n ° 2.
En général, ce n'est pas parce que ce sont des constantes que vous ne devriez pas toujours leur appliquer les principes oo normaux. Si personne d'autre qu'une classe ne se soucie d'une constante - elle doit être privée et dans cette classe. Si seuls les tests se soucient d'une constante, elle doit être dans une classe de test, pas dans du code de production. Si une constante est définie à plusieurs endroits (pas simplement accidentellement les mêmes) - refactoriser pour éliminer la duplication. Et ainsi de suite - traitez-les comme une méthode.