所以我有一个包含几个大项目的解决方案,我正在尝试将其分解为更具独立职责的小型项目。这是一个游戏,但我主要是LOB开发人员,我认为原则可能是普遍的,并且我认为我可以从中学到一些东西。
某些对象中的依赖关系有点太紧密了,我希望能得到一些帮助来解开它们。或者也许有一些模式或抽象可以使它们更易于管理。
Ares.Core.World中有像Creatures、Items等类。它们都继承自Entity,该实体知道它存在于地图上的哪个单元格中。它通过持有对Ares.Core.UI.MapControls.MapCell的引用来实现这一点...你可以看到线已经交叉了。
Ares.Core.UI.MapControls包含Map和MapCell,每个包含它们所包含的生物和物品的列表。MapCell还继承自Ares.Core.World.Entity,因为这样解决了一些早期问题非常优雅——例如,所有实体都有库存。
我想找到一种将UI和World拆分为单独项目(Ares.World和Ares.UI)的方法,因为UI和总体世界可能应该是分开的。但是,如您所见,现在两个项目需要相互引用,而循环引用是不允许的。
我想知道是否有任何架构模式可以帮助解决这种情况。谢谢!
某些对象中的依赖关系有点太紧密了,我希望能得到一些帮助来解开它们。或者也许有一些模式或抽象可以使它们更易于管理。
Ares.Core.World中有像Creatures、Items等类。它们都继承自Entity,该实体知道它存在于地图上的哪个单元格中。它通过持有对Ares.Core.UI.MapControls.MapCell的引用来实现这一点...你可以看到线已经交叉了。
Ares.Core.UI.MapControls包含Map和MapCell,每个包含它们所包含的生物和物品的列表。MapCell还继承自Ares.Core.World.Entity,因为这样解决了一些早期问题非常优雅——例如,所有实体都有库存。
我想找到一种将UI和World拆分为单独项目(Ares.World和Ares.UI)的方法,因为UI和总体世界可能应该是分开的。但是,如您所见,现在两个项目需要相互引用,而循环引用是不允许的。
我想知道是否有任何架构模式可以帮助解决这种情况。谢谢!