¿Hay una manera de evitar dependencias circulares, distintos de los módulos de mezcla, en una disposición como esta (que es una aplicación de ajedrez)cómo evitar dependencias circulares aquí
Descripción larga:
- Existe el módulo
Gui
que importa un móduloChessWidget
; ChessWidget
simplemente envuelve el móduloChessWorld
e importaCellButton
;- El módulo
CellButton
importa el móduloCell
; - El módulo
ChessWorld
importaBoard
(para representarlo) yPlayers
(para notificarlos y recuperar sus movimientos); - El módulo
Board
importa el móduloPiece
; - El módulo
Piece
importa el móduloPlayer
;
Y aquí está el problema:
El Player
módulo necesita saber sobre otros jugadores y el tablero, la importación de este modo ChessWorld
!
Breve descripción:
El módulo World
necesita saber sobre el módulo Player
(aunque sea indirectamente por Board
/Piece
) y Player
necesita saber acerca World
.
La ayuda es muy apreciada.
PD: No es porque no pueda usar las dependencias circulares, sino porque son malas.
En mi humilde opinión, esto no resuelve la dependencia circular. Todavía está allí pero manejado por un contenedor DI y acoplado libremente a través de interfaces. – Cohen
Las dependencias tienen una dirección, p. A-> B-> C-> A es circular, pero si inviertes cualquiera de las flechas ya no es un círculo. –