Static oder Singleton



  • Hallo
    ich habe mal eine generelle Frage : Ich habe eine Klasse, die aus einer Config Datei Daten liest und schreibt. Klappt alles super. Ich habe das im Moment so implementiert, das alle Funktionen static sind. Es gibt aber ja auch die Möglichkeit aus der Klasse ein Singleton Object zu erstellen (private Konstruktor). Dann sind die Funktionen nicht mehr static. Kann mir jemand kurz sagen was der bessere Weg ist und eine kurze Erklärung dazu geben. Vielen Danl



  • Mh, hört sich eigentlich nach nix Java-spezifischem an.

    Also ich würde die Konfigurationen (die ja auch in der Datei gespeichert sind) in ein Objekt kapseln (nicht statisch) und aus diesem Objekt würde ich mir zur Laufzeit immer die gerade gebrauchten Einstellungen abfragen.

    Bei Änderungen würde ich diese auch nur im Objekt halten, aber sofort jeweils in die Datei schreiben (ggf. vllt ein wenig puffern). Aber alles nicht statisch, wenns echt fummelig wird und brennt, dann vielleicht ein Singleton reinbauen, aber nur im Extremfall.



  • Du hast jetzt relativ wenige Informationen preisgegeben aber bis jetzt hört sich es so an, als würde es wirklich Sinn machen ein Singleton pattern zu verwenden. Wenn es um Config Daten geht, schau dir auch mal Property Files an.

    http://de.wikipedia.org/wiki/Java-Properties-Datei

    Ansonsten wären mehr Informationen bestimmt hilfreich.



  • Static oder Singleton

    weder noch. ist beides bad design



  • Fischkopf2009 schrieb:

    ich habe mal eine generelle Frage : Ich habe eine Klasse, die aus einer Config Datei Daten liest und schreibt. [...] Kann mir jemand kurz sagen was der bessere Weg ist und eine kurze Erklärung dazu geben.

    Pseudo-Code:

    class Config
    {
        public Config(string fileName);
    
        public void WriteData(...);
        public string ReadData1();
        public string ReadData2();
        ...
    
        public void CloseFile();
    
        private string FileName;
    }
    

    Fazit: Weder Singleton, noch static, sondern Du benutzt ein normales Klassenobjekt. Der Konstruktor übernimmt den Dateinamen, fertig. Denn solltest Du irgendwann mehrere Cofig-Dateien von der gleichen Sorte haben (z.B. eine pro Benutzer), hast Du mit Singleton und static Probleme.


Log in to reply