我想知道类之间关联的以下可能性之间的优缺点是什么。我知道这是一个非常笼统的问题,取决于具体的案例需求,但我一般想知道作为哲学问题有什么区别
1)
class Order
{
IList<OrderPosition> Positions;
}
class OrderPosition
{
}
2)
class Order
{
}
class OrderPosition
{
Order Order;
}
甚至还有第三种选择来创建双向关联,但我猜这会浪费内存。
那是不一样的。
1) 表示 anOrder可以有多个OrderPositions,并且不能避免 anOrderPosition可以在 multiple 中找到Orders。
2) 表示 anOrderPosition只能包含在一个Order中。
如果我们谈论“组合”/“聚合”(OOP) ,还有其他含义
假设有一些外部因素阻止一个位置Order出现在多个 s 中或Order在 (1) 中多次出现在同一位置(因为这在 (2) 中不会发生)(根据polkduran 的回答)...
这完全取决于情况 - 问问自己最常执行哪些操作,这将指向所需的设计。
当您需要快速找到给定的所有位置时,请使用 (1) Order。
当您需要快速找到Order给定位置的 时,使用 (2)。
在您希望能够快速找到给定位置Order和Order给定位置的所有位置的许多实际情况下,使用两者绝对不会浪费内存。
您可能希望将 (1) 更改为某种树或哈希结构,因此您能够比搜索所有位置更快地找到给定的特定位置(如果这在您的设计上下文中有意义) .OrderOrder