?
Du baust dir eine Hierarchie auf, AbstrakteKonstante, davon erbt IntKonstante, DoubleKonstante, etc. und PiKonstante erbt dann von DoubleKonstante.
Erstellen tust du diese Konstanten dann mit einer KonstantenFactory, dann kannst du einfach
KonstantenFactory meineKonstanteFactory = new KonstantenFactory();
DoubleKonstante meinPi = meineKonstanteFactory.gibDieKonstantePi();
aufrufen. Intern wird dann die Instanz von PiKonstante gecached, so dass du nur minimalen Overhead hast. Mit dem Strategy-Pattern erlaubst du dir sogar, die Konstanten zur Laufzeit auszuwechseln.