Ich mag es wirklich zu programmieren, aber momentan ist jedes Projekt, das ich begonnen habe, aufgrund der zirkulären Abhängigkeiten, die mir und meinem Kopf wirklich Probleme machen, vorzeitig zu Ende. Ich habe Probleme gehabt, ich versuche Spiele zu machen, aber aufgrund meiner Klassenstruktur bin ich auf einige zirkuläre Abhängigkeiten angewiesen, die am Ende Probleme verursachen, die fast immer wachsen und außer Kontrolle geraten. Wie ich es in der Regel strukturieren:Circular Abhängigkeiten und bessere Möglichkeiten, es zu tun?
- Klasse Spiel
- Klasse GameContext
- Klasse Fenster
- Klasse GameContext
- Klasse Eventmanager
- Klasse GameContext
- Klasse State
- Klasse GameContext
- Klasse Fenster
- Klasse GameContext
ich diese verwenden, da ich manchmal zum Beispiel das Fenster zugreifen müssen aus der EventManager . Am Ende verliere ich es immer. Gibt es einen besseren Weg für etwas, das zirkuläre Abhängigkeiten vermeidet? Und wenn nicht, wie denkst du wirklich darüber nach, wenn du mit ihnen umgehen musst? Ich dachte, ich hätte sie verstanden, aber eindeutig nicht.
Was ich versuche zu archivieren ist eine zentrale "Context" -Klasse, auf die andere Klassen zugreifen können, aber ich weiß nicht, wie man in einem solchen Fall zirkuläre Abhängigkeiten vermeiden kann.
Um wirklich zu zeigen, was ich meine, können Sie THIS betrachten, mein letzter fehlgeschlagener Versuch. Das Problem, das ich mit dieser aktuellen Struktur habe, scheint etwas mit einer Abhängigkeit zwischen dem EventManager und dem GameStateManager zu tun zu haben, da ich im EventManager eine Fehlermeldung bekomme, dass GameStateID nicht definiert ist.
Ich denke, Sie müssen versuchen, herauszufinden, warum Sie vom EventManager auf das Fenster zugreifen müssen. Was macht der EventManager? Warum braucht es ein Fenster dafür? –
@ZongZhengLi Ja, ich nehme an, es gehört auch hier. Obwohl dies derzeit zu weit/unklar IMO ist. –
Es ist nicht beabsichtigt, über Code-Design speziell für Spiele zugeschnitten zu sein, ich habe nur Spiele als das Thema, da es ist, wo ich es benutze und Probleme bekomme. Es könnte ein Raketenschiff sein, das einen RocketContext enthält, der einen AuspuffManager enthält, der manchmal etwas von RocketContext benötigt. –