Designfrage zu Resourcemanagern
-
Ich hätte mal ne kleine Designfrage an euch. Wenn man viele Resourcen zu verwalten hat (zB Texturen,Shader,States), würdet ihr es vom Design her besser finden wenn man sie Logisch Gruppiert (also zB alle Texturen zusammen, alle Shader zusammen) und dafür einzellne Managerklassen (Singletons) schreibt. Oder sollte/könnte man hier auch einen einzigen Resourcemanager schreiben der alle Aufgaben insich vereint? Ich sehe bei beiden Varianten Vor- und Nachteile.
-
Du könntest dir eine Basisklasse schreiben, die alle Funktionen beinhaltet, die du für jede der Ressource sowieso brauchst.
Von dieser kannst du dann die jeweiligen Spezialisierungen bei Shadern / Texturen / States und was es sonst noch gibt ableiten.Es hängt immer etwas am Umfang, der mit dem Projekt letztendlich sowieso steigt.
Wenn man wenig Funktionalität braucht, spricht auch nicht viel dagegen, es in einer Klasse zusammenzufassen. Ich finde eine logische Unterteilung besser.
-
Mir gings beid er Sache eher um nen Praktischen Zugriff, es sind etliche Funktionen intern nötig, und ein Manager ist natürlich immer einfacher weil man dann nicht schauen müsste wo bekommt man was her.
Eine option die mir nach deinem Post noch eingefallen ist wäre ein interface das die public Funktionen der Manager enthält und die Befehle durchleitet und so eine saubere Schnittstelle ohne Anzeige der Internen Funktionen darstellen könnte.
-
Du könntest ja ein Singleton für alle Ressource-Zugriffe erstellen und da dann Zugriff auf die speziellen Manager bereitstellen. Damit braucht du nur ein Singleton.
Grob so:
struct ShaderManager {}; struct TextureManager {}; struct RessourceManager{ ShaderManager & Shaders(); TextureManager & Textures(); };Edit: Achja und die Konfiguration (z.B. woher kommt was etc pp) kann dann auch an die Instanzen übergeben werden oder eine gemeinsame Zugriffsschnittstelle oder so.
BR