我想知道以下类之间关联的可能性有什么优缺点。我知道这是一般性的问题,取决于具体的案例需求,但我一般都想知道哲学问题有什么区别
1)
class Order
{
IList<OrderPosition> Positions;
}
class OrderPosition
{
}
2)
class Order
{
}
class OrderPosition
{
Order Order;
}
创建双向关联甚至还有第三种选择,但我认为这会浪费内存。
答案 0 :(得分:1)
假设有一些外部因素阻止某个位置在多个Order
中或多次出现在(1)中的同一Order
中(因为这不会发生在(2)中)(根据polkduran's answer)......
完全取决于具体情况 - 问问自己最常进行的操作,这将指向所需的设计。
当您需要快速查找给定Order
的所有位置时,请使用(1)。
当您需要快速找到给定位置的Order
时,请使用(2)。
在许多真实情况下,使用两者绝对不会浪费记忆力,在这种情况下,您希望能够快速找到给定位置的给定Order
和Order
的所有位置。
您可能希望将(1)更改为某种树或哈希结构,因此您可以比搜索所有Order
更快地找到给定Order
的特定位置{{1}}的位置(如果这在您的设计环境中有意义的话)。
答案 1 :(得分:1)
这是不一样的。
1)表示Order
可以包含多个OrderPositions
,并且无法避免在多个OrderPosition
中找到 Orders
2)表示OrderPosition
只能包含在一个Order
中。
如果我们谈论"composition"/"aggregation"(OOP)
,还有其他影响