我有Hero,Castle,Artefact和Position等类的复杂结构。他们有以下关系:
现在,要实现这些双向关系,很难总是更改所有受影响对象中的引用(例如,当Hero装备Artefact时,我必须更改Hero.Artefact,Artefact.Hero,Artefact.Position和Position.Artefact)。因此,我正在使用一个Game类,它作为所有这些的容器(换句话说,Game类有4个列表,每个类一个)。
然后,我将引用添加到包含游戏中,并且在ID的帮助下,我能够更加优雅地更改单个引用(再次装备Artefact):
Artefact.HeroID = newHeroID;
Artefact.PositionID = null;
然后,各个类中的所有访问器都允许我获取正确的对象:
Hero.Artefact
{
get
{
return this.Game.Artefacts.FirstOrDefault(a => a.HeroID == this.ID);
}
}
Artefact.Hero
{
get
{
return this.Game.Heroes.FirstOrDefault(h => h.ID == this.HeroID);
}
}
等
这个设计模式是否有名称(它是一种设计模式)?当你知道实现时,很难找到正确的答案,但不知道名字:D(反过来说很简单)。
答案 0 :(得分:0)
对我来说,它看起来像是Domain Driven Design的存储库模式,在这种情况下是内存实现。
存储库是一个神奇的架子,您可以从中获取域对象(例如您的Hero,Artefact)。如何完成它与存储库的客户端无关,你可以传递MySQL实现,文件,redis等。在你的情况下,它是一个简单的内存存储。