In genere cerco ed evito le relazioni bidirezionali a tutti i costi. Recentemente ho cercato di seguire una filosofia di progettazione più incentrata sul dominio e sto cercando consigli nel modo migliore per risolvere un problema specifico.
Sto implementando una griglia 2d di base. Ci sono 3 classi base, Item, Tile (ha un elenco di elementi) e World (ha un array 2d di tile).
Sto lottando con dove mettere il metodo move () che sposta un oggetto da una tessera a una tessera attigua. La mia inclinazione iniziale sarebbe quella di posizionare il metodo di spostamento nella classe Item poiché è l'oggetto effettivamente in movimento.
Tuttavia, ciò creerebbe una dipendenza circolare. In passato ho sempre lavorato con oggetti stupidi, nel qual caso il metodo move () era in un livello superiore (una specie di WorldManager o MoveManager) che conosce sia le piastrelle che gli oggetti. Sono interessato a quali proposte potrebbero avere altri che possono evitare la dipendenza circolare mantenendo la filosofia centrata sul dominio.