-3

我想知道类之间关联的以下可能性之间的优缺点是什么。我知道这是一个非常笼统的问题,取决于具体的案例需求,但我一般想知道作为哲学问题有什么区别

1)

class Order
{
    IList<OrderPosition> Positions;
}

class OrderPosition
{

}

2)

class Order
{

}

class OrderPosition
{
    Order Order;
}

甚至还有第三种选择来创建双向关联,但我猜这会浪费内存。

4

2 回答 2

1

那是不一样的。

1) 表示 anOrder可以有多个OrderPositions,并且不能避免 anOrderPosition可以在 multiple 中找到Orders

2) 表示 anOrderPosition只能包含在一个Order中。

如果我们谈论“组合”/“聚合”(OOP) ,还有其他含义

于 2013-05-06T13:02:58.383 回答
1

假设有一些外部因素阻止一个位置Order出现在多个 s 中或Order在 (1) 中多次出现在同一位置(因为这在 (2) 中不会发生)(根据polkduran 的回答)...

这完全取决于情况 - 问问自己最常执行哪些操作,这将指向所需的设计。

当您需要快速找到给定的所有位置时,请使用 (1) Order

当您需要快速找到Order给定位置的 时,使用 (2)。

在您希望能够快速找到给定位置OrderOrder给定位置的所有位置的许多实际情况下,使用两者绝对不会浪费内存。

您可能希望将 (1) 更改为某种树或哈希结构,因此您能够比搜索所有位置更快地找到给定的特定位置(如果这在您的设计上下文中有意义) .OrderOrder

于 2013-05-06T12:54:04.430 回答