Ich schreibe eine Audio-Verarbeitung Standalone-Anwendung. Ich habe ein AudioManager
Objekt, das Dinge mit der Engine zu tun hat (wie E/A-Gerätemanagement, Signalverarbeitungsrouting, Laufstatus). Ich schreibe eine GUI, um die AudioManager
zu steuern, die im Hintergrund läuft. Derzeit benötigt jede Komponente, die die Nachricht senden muss, einen Zeiger darauf.Wie vermeide ich die Verwendung eines globalen für die Daten hinter einer GUI?
Das beginnt verrückt zu erhalten, wenn ein tief verschachteltes Objekt einen Zeiger auf die AudioManager
braucht, da es bedeutet, dass ich den Zeiger durch die Konstrukteure von GUI-Objekte übergeben müssen, die über AudioManager
(nur einige Subkomponenten müssen nicht direkt kümmern wissen).
Ich könnte einfach AudioManager
ein Singleton machen, um die Boilerplate zu vermeiden, aber der Informationsfluss von der Klasse ist bidirektional, so ist dies wahrscheinlich eine schlechte Idee. Ich fühle mich auch ein wenig fischig, alles in eine große Klasse einzuwickeln, aber es macht es ein bisschen leichter, herumzugehen. Gibt es ein allgemeines Muster, um zu vermeiden, dass der hirnlose Zeiger passiert?
Unten ist ein bisschen Pseudocode, der einige Konstruktoren zeigt, die den grundlegenden Typ des Problems hervorheben. Ich habe dieses C++ 11 markiert, um zu sehen, ob das irgendwelche einzigartigen Lösungen gibt.
Also Audio-Manager ist, was Kinder einen Audio-Player in diesen Tagen nennen. Interessant. –
So Trolling ist was Kinder Mach es SO in diesen Tagen. Interessant. – learnvst
Roboter ist nicht "Trolling", er verlockt zur Lächerlichkeit, Dinge "Manager" zu nennen. Das ist fast immer ein Zeichen für schreckliches Design. Sie haben sogar eine Antwort, die das ausdrücklich sagt. –