我有“部分”对象和“材料”对象。每个部分最多分配1种材料。每种材料分配给0或更多部分。这是一个有2个等级的DAG。
每个零件对象是否应该引用其材料?或者只是存储材料名称或索引会更好。或者除了数据库之外还有其他方法吗?
第一种方式意味着对同一物质对象的多次引用,这似乎很糟糕,但有多糟糕?
第二种方式似乎很难看,因为数字索引可能无法正确更新,或者如果按名称引用材料则需要进行字符串比较。它还重新发明了语言中已有的对象引用。
答案 0 :(得分:0)
继续参考。它很快,使用很少的内存,你需要它。 (我确实假设你实际上会使用它。一个不同或另外的选择是保留每种材料的零件参考列表。但是如果你不需要它,不要这样做。)
当您尝试获取材质的对象时,存储材质名称或索引将占用更多空间并花费更多。实际上,获取零件材料名称的最便宜方法是使用参考来获取材料并从材料中获取名称或索引。
不要在程序内部使用名称和索引。必须使用 do (并存储在您的程序中)才能从数据库和其他程序中获取内容。 (“其他程序”,实际上是指套接字和此类和平面文件 - 最初数据来自另一个程序或该程序的另一个会话。)并且您做必须保持你的参考:如果材料被删除,所有对它的引用都必须改变。或者您可以将材料标记为已删除(适用于垃圾收集,但请注意重新添加)。
并且与我自相矛盾:我在极少数情况下使用了名称而不是引用,因为它们在不断添加和删除材料(以您的案例为例)时效果很好。如果我将某些内容标识为“Lumber”,则该名称的材料可以删除并添加100次,而不会在一天结束时影响我的部件的使用情况。