这是一个理论/迂腐的问题:想象每个人可能被多个其他人拥有的属性。此外,从一次所有权的迭代到下一次,两个邻近的所有者可以决定部分地结合所有权。例如:
territory 1, t=0: a,b,c,d
territory 2, t=0: e,f,g,h
territory 1, t=1: a,b,g,h
territory 2, t=1: g,h
也就是说,c
和d
不再拥有财产;可以这么说,g
和h
变成了肥猫。
我目前将此数据结构表示为树,其中每个孩子可以有多个父母。我的目标是将其融入复合设计模式中;但是我遇到的问题是如何在客户端可能会返回并更新以前的所有权而不会破坏整个结构的情况下获得概念性基础。
我的问题是双重的。
简单:这个数据结构的方便名称是什么,我可以自己谷歌吗?
很难:我做错了什么?当我编码时,我试着保持口头禅,“保持简单,愚蠢”,在我脑海中,我觉得我打破了这个信条。
答案 0 :(得分:11)
我的问题有两个方面:简单:这个数据的方便名称是什么 结构,这样我可以自己谷歌吗?
这里有的不是树,而是图表。多图会在这里帮到你。 但任何邻接列表或邻接矩阵都会给你一个良好的开端。
以下是关于邻接矩阵和列表的视频:Youtube on adjacency matrix and list
很难:我做错了什么?
这真的很难说。也许你没有模仿这种关系 以适当的方式。考虑到良好的数据结构,这并不难。
而且,当你问到设计模式时(但你可能已经发现了自己), 使用Composite模式可以轻松地为这样的设置建模。
答案 1 :(得分:2)
您的所有者与您所在地区(属性)之间存在多对多关系。我不确定你在使用什么语言,但是这种事情可以很容易地在关系数据库中表示和跟踪。 (你可能想要每个实体都有一个表,这个关系可能需要第三个“联结”表。如果有必要能够“及时查询”,这可能会有某种“时间索引”列同样。)
如果您使用的是面向对象的语言,则可以创建两个类,Territory和Owner,其中Territory类具有属性/ member / field,它是对Owners的引用/指针的集合,并且Owner类具有类似的领土集合。 (这两个集合中的一个可能需要包含“弱”引用,具体取决于语言。)
在这种情况下,如果您希望能够在某个特定时间点返回并查看网络状态,则可能会出现一些困难。 (如果这是你需要的,那么这样说,我(或其他人)可以发布一个适用于此的解决方案。)
我不确定您正在努力达到什么样的简单程度,但在这两种情况下都不是真正更新所有权关系“硬”。也许如果您发布了一些代码,可能更容易为您提供更具体的建议。