Итак, у меня есть решение, которое содержит несколько крупных проектов, которые я пытаюсь разбить на более мелкие проекты с более изолированными обязанностями. Это игра, но я в основном разработчик LOB, и я думаю, что принципы, вероятно, универсальны, и я думаю, что я мог бы кое-что узнать здесь.
Зависимости в некоторых объектах слишком тесно переплетены, и я надеюсь на некоторую помощь в том, как их распутать. Или, может быть, какой-то шаблон или абстракция, которые могут сделать их более управляемыми.
Ares.Core.World содержит классы, такие как существа, предметы и т. Д. Все они наследуются от сущности, которая знает, в какой ячейке на карте она существует. Это достигается путем удержания ссылки на Ares.Core.UI.MapControls.MapCell ... И вы можете видеть, что провода уже пересекаются.
Ares.Core.UI.MapControls содержит Map и MapCell, каждый из которых содержит списки существ и предметов, которые они содержат. MapCell также наследует от Ares.Core.World.Entity, поскольку это очень элегантно решило несколько ранних проблем - например, у всех сущностей есть инвентарь.
Я хотел бы найти способ разделить пользовательский интерфейс и мир на отдельные проекты ( Ares.World и Ares.UI ), поскольку пользовательский интерфейс и всеобъемлющий мир, вероятно, должны быть разделены проблемы. Но, как вы можете видеть, в нынешних двух проектах необходимо ссылаться друг на друга, и циклические ссылки не допускаются.
Мне интересно, есть ли какие-нибудь архитектурные паттерны, которые могли бы помочь в этой ситуации. Спасибо!