В настоящее время я работаю над дизайном Java-игры, и я столкнулся с проблемой с круговой зависимостью между классами. Вот (упрощенный) пример моей текущей задачи:Как удалить круговую зависимость в пошаговой игре?
class Game
class Player
class Ability
Игры имеют Игроки, которые в свою очередь имеют способности (например, заклинание или атака). Способность имеет метод, как:
public void perform(Player source, Game game);
Вопрос заключается в том, что способность требует знаний игры (и игрок/объект игры) для того, чтобы выполнять свои действия. Есть ли способы решить это?
Обновление: Я ценю ответы. Теперь я вижу, что способности не должны принадлежать Игрокам. У меня возникли проблемы с выяснением того, как связать Игроков и Способностей. Например, возьмите игру, такую как Pokemon, где у каждого существа есть способности, которые он может использовать. Или возьмите коллекционную карточную игру, где каждая карта может иметь способности, которые влияют на любую часть игры. Должен быть какой-то способ определить, какие игроки (или любой объект, способный использовать способ) могут использовать какие способности, даже если способности не принадлежат непосредственно Игрокам.
Согласитесь с этими соображениями. – Woot4Moo