Quindi ho una soluzione che contiene alcuni grandi progetti, che sto cercando di suddividere in progetti più piccoli con responsabilità più isolate. Questo è un gioco con cui sto armeggiando - Sono principalmente uno sviluppatore LOB e penso che i principi siano universali, quindi spero di imparare qualcosa qui.
Le dipendenze di alcuni oggetti sono un po 'troppo strettamente intrecciate, e spero in qualche aiuto su come districarle. O forse una sorta di pattern o astrazione che potrebbe renderli più gestibili.
Ares.Core.World contiene classi come Creature, Elementi, ecc. Tutte ereditano dall'Entità, che è a conoscenza di quale cella sulla mappa esiste. Ciò si ottiene tenendo un riferimento ad Ares.Core.UI.MapControls.MapCell ... E puoi vedere che i fili si stanno già incrociando.
Ares.Core.UI.MapControls contiene Map e MapCell, ognuno dei quali contiene elenchi di creature e oggetti che essi contengono. MapCell eredita anche da Ares.Core.World.Entity dal momento che ha risolto alcuni problemi iniziali in modo molto elegante - ad esempio, tutte le Entità hanno inventario.
Mi piacerebbe trovare un modo per dividere l'interfaccia utente e il mondo in progetti separati ( Ares.World e Ares.UI ) dal momento che l'interfaccia utente e il mondo globale dovrebbero probabilmente essere preoccupazioni separate. Ma come puoi vedere, il modo in cui ora i due progetti dovrebbero fare riferimento l'un l'altro, e i riferimenti circolari non sono consentiti.
Mi chiedo se ci siano schemi architettonici là fuori che potrebbero aiutare in questa situazione. Grazie!