Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] statische klassen immer sinnvoll ?

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Codercrush
    hat ein Thema erstellt [Erledigt] statische klassen immer sinnvoll ?.

    [Erledigt] statische klassen immer sinnvoll ?

    Hi,

    ich habe vor kurzem das Grundgerüst meines Frameworks fertiggestellt und habe zu testzwecken einmal meine Basis-klassen in statische Klassen geändert. Eine höhere Performance war schon zu spüren ...

    Meine Frage ist nun, wo macht eine statische klasse sinn? ... oder fast schon wo macht eine normale Klasse sinn? ...

    Kann man aus allen Klassen bei denen man sich sicher ist das sie nur einmal erzeugt werden, eine statische klasse basteln? ... und die klassen die mehrmals erzeugt werden können, als normale Klasse erstellen?

    Oder wie seht ihr das?

    Gruß Codercrush

  • nikosch
    antwortet
    - Verwaltung von Objekt-Instanzen im globalen Variablenraum
    - Anbieten von Hilfsfunktionen mit hohem kontextuellen Bezug zur Klasse aber ohne spezifischen Objektbezug im globalen Funktionsraum
    - globale Initialisierung/Konfiguration von Klassen als Objekt-Defaults

    Diese drei Punkte fallen mit ad hoc als sinnvolle Anwendungsfälle ein.

    Einen Kommentar schreiben:


  • dsentker
    antwortet
    Interessanter Thread. Statische Methoden werden denke ich mal hauptsächlich benutzt, um das Singleton-Pattern realisieren zu können. Ich verwende auch relativ häufig das Registry Pattern ( = statische Klasse) für config-Files, um überall auf Config-Elemente zugreifen zu können.

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Gelungener Vergleich.

    Einen Kommentar schreiben:


  • Koala
    antwortet
    Du fragst doch bei prozeduraler Programmierung auch nicht:

    "Soll ich bei Werten bei denen ich mir zu 99% sicher bin,
    daß sie sich nicht ändern eine Konstante nehmen ?
    Oder besser doch ne Variable ?
    Wann machen Konstanten überhaupt Sinn ?"

    Einen Kommentar schreiben:


  • Codercrush
    antwortet
    @nikosch ...

    ... ok ... das war ne antwort

    ... Klingt einleuchtend

    ... thx für euer bemühen

    Einen Kommentar schreiben:


  • nikosch
    antwortet
    Ich sehe in diesem Beitrag keine Vorteile genannt, aber jede Menge „wird schon nicht vorkommen“.
    ... also läufts wohl darauf hinaus ... wenn ich mir 99% prozent sicher bin das ich die Klasse nur einmal brauche, kann ich sie statisch machen ...
    Sorry, Objektorientierung und statische Verwendung von Methoden sind zwei völlig verschiedene Paradigmen. Statics sind so gensehen nur namensraumbasierte prozedurale Prinzipien, wärend Objekte eine echte Kapselung bieten, als Blackbox fungieren, die in einer Variable gehalten werden oder bsp. als Funktionsparameter dienen können. Für mich wird OOP erst richtig im Zusammenspiel mehrerer Objekte sinnvoll, was bspw. bestimmte Pattern, Typehinting u.ä. erlaubt. Statische Methoden sind meist nur wenig elegante Krücken.

    Einen Kommentar schreiben:


  • Codercrush
    antwortet
    mmh ...

    Datenbank z.b. geht gar nicht weil du vlt. mal eine zweite DB anzapfen möchtest
    geht auch ohne von der Datenbank 2 Instanzen zu haben ... also zumindest in mysql weiß ich das ...

    Konfiguration auch nicht denn was ist wenn du mehrere Konfigurationen haben möchtest?
    Für mein Framework brauchst du nicht mehrere Konfigurationsklassen ...

    was ist wenn du deine Session noch irgendwo anders speichern möchtest?
    Dann ändert man in meinem Framework die Speicher routine der sessions^^ ...

    ... sorry aber da seh ich noch keinen richtigen grund ...

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    Nein auch dann nicht, es kommt auf den Anwendungszweck drauf an. Datenbank z.b. geht gar nicht weil du vlt. mal eine zweite DB anzapfen möchtest. Konfiguration auch nicht denn was ist wenn du mehrere Konfigurationen haben möchtest? Oder Session, was ist wenn du deine Session noch irgendwo anders speichern möchtest?

    Einen Kommentar schreiben:


  • Codercrush
    antwortet
    Es gibt viele Klassen die nur einmal erzeugt werden aber theoretisch mehrfach vorhanden sein könnten/sollten/müssten. In dem Fall ist es dann natürlich extrem ungünstig die als statische Klassen zu implementieren. Ich denke es gibt nur sehr wenige Anwendungsfälle wo man wirklich sicher gehen kann das man nur eine einzige Instanz der Klasse benötigt.
    In meinem Fall sind es halt meine Basis-Klassen, wie z.B. die Datenbank, die Seite an sich, die Konfiguration, die Session usw. ...

    ... also läufts wohl darauf hinaus ... wenn ich mir 99% prozent sicher bin das ich die Klasse nur einmal brauche, kann ich sie statisch machen ...

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    Es gibt viele Klassen die nur einmal erzeugt werden aber theoretisch mehrfach vorhanden sein könnten/sollten/müssten. In dem Fall ist es dann natürlich extrem ungünstig die als statische Klassen zu implementieren. Ich denke es gibt nur sehr wenige Anwendungsfälle wo man wirklich sicher gehen kann das man nur eine einzige Instanz der Klasse benötigt.

    Einen Kommentar schreiben:


  • xm22
    antwortet
    Das hängt ganz vom konkreten Fall ab.

    Einen Kommentar schreiben:


  • Codercrush
    antwortet
    Ich glaube du hast statische Klassen nicht ganz verstanden...
    mmh ... glaub ich irgendwie doch vllt hast du ja recht ...

    Ich find die Frage komisch. Den statisch und nicht statisch sind zwei Paar Schuhe! Sie lösen andere Probleme und von daher stellt sich die Frage gar nicht.
    mit is schon klar das statisch und nicht statisch nicht das selbe ist ...

    vllt hab ich mich nich ganz verständlich ausgedrückt ...

    ... meine frage ist einfach nur ... soll ich Klassen die nur einmal erzeugt werden, generell als Statische Klasse oder sie als Singleton also nicht statisch programmieren ?

    Einen Kommentar schreiben:


  • mquadrat
    antwortet
    Ich glaube du hast statische Klassen nicht ganz verstanden...

    Einen Kommentar schreiben:


  • Flor1an
    antwortet
    Ich find die Frage komisch. Den statisch und nicht statisch sind zwei Paar Schuhe! Sie lösen andere Probleme und von daher stellt sich die Frage gar nicht.

    Einen Kommentar schreiben:

Lädt...
X