Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!
Werbeanzeige
Alter Hase
Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Jedes Design Pattern wurde als Lösung für ein bestimmtes Problem entworfen, z.B. das Singleton Design Pattern, wenn man nur eine Instanz der Klasse haben will und es keine weitere Instanz der Klasse geben darf.
Dieser Beitrag wurde bereits 7 mal editiert, zuletzt von »dot« (15.08.2016, 21:20)
Da sehe ich bei den üblichen Singleton-Implementierungen eher die schwierige Testbarkeit und besonders den Krakeneffekt der globalen Zugriffsmöglichkeit als Problem. Der Wunsch nur eine Instanz zu haben, ist meiner Erfahrung nach eher kein Problem und häufig recht sinnvoll.Problematisch ist fast immer, dass die Einschränkung "Es darf nur eine Instanz geben" eigentlich gar nicht existiert, sondern entweder ein schlechtes Design drumherum dies "erforderlich" macht, oder nur die Eigenschaft der globalen Zugreifbarkeit der Grund ist, der hinter dem "Es darf nur eine Instanz geben" versteckt wird.
Es ist ja keine Schande etwas falsch zu machen, als Programmierer tu ich das täglich, [...].
Treue Seele
Ich führe das lieber nochmal explizit aus: Ein Singleton ist nicht dafür gedacht, dass man damit Variablen hält, von denen man nur eine haben will. Ein Singleton ist einzusetzen (und nur dann), wenn es unter gar keinen Umständen jemals mehr als eine Instanz davon geben darf. Jede andere Verwendung ist eine Pseudo-Klassen-Gestaltung einer globalen+statischen Variable. Das ist kein Objekt-Orientierungs-Globale-Variablen-Schönmach-Pattern.
Treue Seele
Zum Speichern von Texturen gibt es meist einen AssetManager.
Da sehe ich bei den üblichen Singleton-Implementierungen eher die schwierige Testbarkeit und besonders den Krakeneffekt der globalen Zugriffsmöglichkeit als Problem. Der Wunsch nur eine Instanz zu haben, ist meiner Erfahrung nach eher kein Problem und häufig recht sinnvoll.
Eine Sache, die ich in der Spieleentwicklung auch ab und zu verwende, sind statische Klassen mit Initialisierungsfunktion.
Wenn ich zum Beispiel Button/HUD-Texturen lade, die ich permanent und überall brauche, dann will ich die ja nicht mehrfach laden oder mehrere Instanzen haben, wo die immer gleichen Texturen drin liegen.
Mehrere Instanzen kann man davon aber auf jeden Fall nicht versehentlich haben :-)
Treue Seele
Was genau soll eine "statische Klasse" sein?
Zitat von »dot«
Also ich kann mich gerade nicht erinnern, wann ich das letzte Mal versehentlich Instanzen von etwas erzeugt hätte, aber welche Probleme würden in dem Fall denn genau auftreten, dass es das unbedingt zu verhindern gilt!?Mehrere Instanzen kann man davon aber auf jeden Fall nicht versehentlich haben :-)
Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »LInsoDeTeh« (16.08.2016, 15:00)
Werbeanzeige