Auch, wenn es jetzt die Frage verfehlt:
Selbst einen Singleton würde ich ohne public static Variable machen.
Mir gefällt da das Konzept der "public static Klassenname getInstance()" - Methode in Verbindung mit einer "private static Klassenname singleInstance" besser.
So kann ich nämlich zu jeder Zeit sicher sein, dass das Singleton-Objekt initialisiert ist bzw. für den Aufruf initialisiert wird.
Ich versuche mich jetzt mal an einer möglichen Faustregel (nehmt sie auseinander oder verbessert sie, vielleicht finden wir ja eine gemeinsame Richtlinie):
Instanz-Variablen nutzt man, für Daten, die zu dem Datenstamm des Objekts gehören.
Dazu gehören Daten, die die Eigenschaften des Objekts definieren (z.B. name, vorName und haarFarbe für eine Klasse Person) und Konstanten (die als static), die als Eigenschaften für Funktionsaufrufe oder Instanzvariablen dienen (z.B. BLOND, BRUNETTE, SCHWARZ, ROT für genannte Klasse Person).
Alle anderen Variablen (z.B. Laufvariablen) gehören in die Methoden, in denen sie Verwendet werden.
Ausnahmen gibt es natürlich immer.
Gruß hpvw