Мне очень нравится кодирование, но в настоящее время каждый проект, который я начал, закончился раньше из-за круговых зависимостей, которые действительно возились со мной и моей головой. У меня были проблемы, я пытаюсь создавать игры, однако из-за моей структуры классов я полагаюсь на некоторые круговые зависимости, которые в конечном итоге вызывают проблемы, которые почти всегда растут и выходят из-под контроля. Как я обычно структурировать:Круговые зависимости и лучшие способы сделать это?
- класс игры
- класс GameContext
- класс Window
- класс GameContext
- класс EventManager
- класс GameContext
- класс StateManager
- класс GameContext
- класс Window
- класс GameContext
Я использую это, так как я иногда нужно получить доступ, например, окна из EventManager , В конце концов, я всегда теряю его. Есть ли лучший способ для чего-то подобного, который позволяет избежать круговых зависимостей? И если не так, как вы думаете, когда вам приходится иметь дело с ними? Я думал, что понял их, но явно нет.
То, что я пытаюсь архивировать, является классом «Контекст», который могут иметь другие классы, но я не знаю, как избежать круговых зависимостей в таком случае.
Чтобы действительно показать, что я имею в виду, вы можете посмотреть THIS, мой последний неудачный попыток. Проблема, с которой я сталкиваюсь с этой текущей структурой, похоже, связана с зависимостью между EventManager и GameStateManager, поскольку в EventManager я получаю сообщение об ошибке неопределенности на GameStateID.
Я думаю, вам нужно попытаться выяснить, почему * вам нужно «получить доступ к окну из EventManager. Что такое работа EventManager? Зачем для этого нужно окно? –
@ ZongZhengLi Да, я думаю, он тоже здесь. Хотя в настоящее время это слишком широкое/неясное ИМО. –
Он не предназначен для кодировки speciallt с учетом игр, у меня просто есть игры в качестве темы, так как именно там я использую ее и получаю проблемы. Это может быть ракетка, которая содержит RocketContext, который содержит ExhaustManager, который иногда нуждается в чем-то из RocketContext. –