Есть ли способ избежать круговых зависимостей, кроме смешивания модулей, в такой схеме (это шахматное приложение)
Длинное описание:
- Существует модуль
Gui, который импортирует модульChessWidget; -
ChessWidgetпросто обертывает модульChessWorldи импортируетCellButton; - Модуль
CellButtonимпортирует модульCell; - Модуль
ChessWorldимпортируетBoard(для его представления) иPlayers(чтобы уведомить их и получить их ходы); - Модуль модуля
Boardимпортирует модульPiece; - Модуль модуля
Pieceимпортирует модульPlayer;
И ЗДЕСЬ ПРОБЛЕМА:
Модуль Player должен знать о других игроках и плате, импортируя ChessWorld!
Краткое описание:
Модуль World должен знать о модуле Player (даже косвенно Board/Piece) и Player должен знать о World.
Помощь очень приветствуется.
PS: Не потому, что я не могу использовать круговые зависимости, а потому, что они злы.