Meine Vorschläge (in absteigender Reihenfolge der Präferenzen):
1) Tu es nicht . Erstellen Sie die Konstanten in der tatsächlichen Klasse dort, wo sie am relevantesten sind. Eine Klasse / Schnittstelle mit einer Menge Konstanten zu haben, folgt nicht wirklich den Best Practices von OO.
Ich und alle anderen ignorieren von Zeit zu Zeit die Nummer 1. Wenn du das machst, dann:
2) Abschlussklasse mit privatem Konstruktor Dies verhindert zumindest, dass jemand Ihren 'Beutel mit Konstanten' missbraucht, indem er ihn erweitert / implementiert, um einen einfachen Zugriff auf die Konstanten zu erhalten. (Ich weiß, dass du gesagt hast, du würdest das nicht tun - aber das bedeutet nicht, dass jemand mitkommt, nachdem du es nicht getan hast.)
3) Schnittstelle Dies wird funktionieren, aber nicht meine Präferenz, wenn ich den möglichen Missbrauch in # 2 erwähne.
Nur weil dies Konstanten sind, heißt das im Allgemeinen nicht, dass Sie keine normalen oo-Prinzipien auf sie anwenden sollten. Wenn sich nur eine Klasse um eine Konstante kümmert, sollte sie privat und in dieser Klasse sein. Wenn sich nur Tests um eine Konstante kümmern, sollte sie sich in einer Testklasse befinden, nicht im Produktionscode. Wenn eine Konstante an mehreren Stellen definiert ist (nicht nur versehentlich dieselbe) - Refactor, um Doppelarbeit zu vermeiden. Und so weiter - behandeln Sie sie wie eine Methode.