Gloable Einstellungen

Status
Nicht offen für weitere Antworten.

MarcoGomez

Mitglied
Hallo,

habe in meinem Java-Projekt eine Anzahl von globalen Einstellungen die ich über eine config.xml vornehme. Habe dazu eine passende Klasse geschrieben, die die Einstellungen ausliest. Nun ist das Problem, wie ich auf diese Einstellungen zugreife. Habe zwei Varianten, über Singleton-Pattern oder über statische Methoden. Anwendung:

Singleton settings;
settings = Singleton.getInstance(); // objekt wird erzeugt bzw. vorhandenes zurückgegeben
database.connect(settings.getConnectionString);

im Gegensatz dazu, statische Methoden, schneller zu verwenden, nur eine Zeile:
database.connect(Settings.getConnectionString());

Was ist besser?
 

trazzag

Bekanntes Mitglied
du kannst das obere beispiel auch in einer Zeile schreiben:

database.connect(Singleton.getInstance().getConnectionString);

zu deiner Frage: ich denke, daß ist Geschmackssache, wobei ich die statischen Methoden verwenden würde - sofern die Einstellungen für alle Nutzer (sofern es mehrere Clients gibt) gleich sind.
 

Marco13

Top Contributor
Was ist besser?

Eindeutig: Lösung Nummer DREI :wink:
Du solltest auf jeden Fall genau überlegen, OB du derartige globale Einstellungen wirklch brauchst und in dieser Form verwenden willst. Ich selbst darf mich gerade mit einem (größeren) Programm rumschlagen, wo mehrere Leute, über Jahre hinweg, so eine Settings-Klasse systematisch mißbraucht haben, um Zustände zu speichern, die eigentlich in Datenmodelle gehören ("Das ist so praktisch, da kann man von überall drauf zugreifen... " :autsch: ).

Ansonsten ist der Unterschied bei der Anwendung nicht so groß:

database.connect(Settings.getInstance().getConnectionString());
database.connect(Settings.getConnectionString());

Singletons haben gegenüber statischen Methoden den einen Vorteil, dass man noch entscheiden kann, WAS bei "getInstance" zurückgegeben wird. Das kann eine abgeleitete Klasse sein, oder (z.B. zum Testen oder so) eine Instanz mit "besonderen" Einstellungen... Damit hat man ein bißchen mehr Flexibilität...
 

Oni

Top Contributor
Ich muss das nochmal aufgreifen. Wie sieht denn deine Lösung 3 aus?

Angenommen die Anwendung hat eine Konfigurationsdatei, mit der viele Sachen in der Anwendung gesteuert werden können und die daher von sehr vielen unterschiedlichen Klassen benötigt wird.

Alles in ein DatenModel speichern und von Klasse zu Klasse weiterreichen? Wenn das Verhalten bei 50 von 70 Klassen ueber die Konfigsteuerbar ist. Ist das dann wirklich besser als ein Singleton?
 

Janus

Bekanntes Mitglied
kommt drauf an, was solche settings alles steuern sollen. wenn man tatsächlich an diversen stellen auf irgendwelche zentralen einstellungen zurückgreifen muss, dann kann es durchaus sinnvoll sein, mit einer art singleton zu arbeiten.

tu dir dann aber selbst einen gefallen und löse es nicht durch statische methoden. die kann man nämlich nicht überladen, was das ganze sehr schnell ziemlich unhandlich machen kann.

es sollte aber schon differenziert werden, was in so einer settings klasse alles für einstellungen liegen. ein connection string hat niemanden ausser der DB klasse zu interessieren, also sollte auf sowas auch keine andere klasse zugriff haben.

wenn die einstellungen irgendwelche lokalen dialoge betreffen, dann sollten auch jeder dialog sich entsprechend selbst verwalten. eine einzige, riesige, zentrale settings klasse, die kreuz und quer und wild alles mögliche steuert, ist ein wartungssumpf.
 
G

Guest

Gast
Die Frage ist, ob man wirklich eine große ini-Datei für alles brauch oder lieber mehrere kleine benutzt.

Die lädt man dann einfach wenn mal sie das erste Mal benötigt ein und cacht sie dann in einem lokalen "Context" für eine neuerliche Verwendung.
 

Marco13

Top Contributor
@Oni: Ich hatte ja geschrieben: "Du solltest auf jeden Fall genau überlegen, OB du derartige globale Einstellungen wirklch brauchst und in dieser Form verwenden willst". Wenn es wirklich EINE globale Sache ist, die IMMER überall gleich ist, ist so ein Singleton OK. Das KÖNNTE dann (nur als Beispiel!!!) sowas wie eine Sprach-Einstellung sein - die wirkt sich auf 100 GUI-Klassen aus, und man hat selten eine Anwendung, in der ein Menü Deutsch und ein Dialog Englisch ist. (Zumindest nicht absichtlich). Aber wenn man in so einen Config-Singleton (über längere Zeit viele) Eigenschaften reinwurstet, die eigentlich in Datenmodelle gehören, kann das SEHR, SEHR häßlich werden..... Erweiterbarkeit und Warbarkeit sind dann gleich null, und sowas wie Model-View-Controller mit einem Singleton als Modell ist eben schon sehr :autsch: :roll: ....
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
M Kameradaten bzw. Einstellungen herausfinden Allgemeine Java-Themen 9
J GUI-Einstellungen mittels Preferences Allgemeine Java-Themen 6
M DYGraphen darstellen... fehlende Einstellungen Allgemeine Java-Themen 1
B Fehler beim Auslesen von Einstellungen. Zwei ähnliche Blöcke, nur eins geht. Allgemeine Java-Themen 5
M Einstellungen in JAR speichern Allgemeine Java-Themen 8
I Einstellungen für ein Programm speichern Allgemeine Java-Themen 5
E Welches Dateiformat für gespeicherte Einstellungen? Allgemeine Java-Themen 20
F Schlüsselworte Einstellungen dynamisch deserialisieren Allgemeine Java-Themen 5
E FF Einstellungen über Programm ändern? Allgemeine Java-Themen 7
L RMI Die richtigen Policy-Einstellungen oder einfach Signieren? Allgemeine Java-Themen 3
M Speichern von Einstellungen Allgemeine Java-Themen 13
Mr.Isaaaac Tomcat Proxy Einstellungen, hä? Allgemeine Java-Themen 3
T Drucken mit PrintJob und Einstellungen merken Allgemeine Java-Themen 3
eskimo328 Verwaltung Kundenspezifische Einstellungen Allgemeine Java-Themen 16
K Java Einstellungen Allgemeine Java-Themen 2
E Nicht Business-Logik Daten also Einstellungen wo speichern? Allgemeine Java-Themen 2
M Passwörter in Einstellungen speichern Allgemeine Java-Themen 2
S Java Editor einstellungen Allgemeine Java-Themen 4
M JVM Einstellungen in JAR einbetten Allgemeine Java-Themen 2
W Einstellungen verwalten Allgemeine Java-Themen 31
DEvent In Mehrbenutzersystemen Einstellungen speichern Allgemeine Java-Themen 8
TheJavaKid Einstellungen speichern ohne eine Datei zu erstellen! Allgemeine Java-Themen 19
D Probleme mit dem Drucker Einstellungen ! Allgemeine Java-Themen 5
M java Einstellungen Allgemeine Java-Themen 5
M problem mit packages - falsche einstellungen? Allgemeine Java-Themen 2
K Einstellungen aus Windows und Linux ermitteln Allgemeine Java-Themen 2

Ähnliche Java Themen

Neue Themen


Oben