OOP协会的哲学概念

时间:2013-05-06 12:42:46

标签: c# .net oop

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

1)

class Order
{
    IList<OrderPosition> Positions;
}

class OrderPosition
{

}

2)

class Order
{

}

class OrderPosition
{
    Order Order;
}

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

2 个答案:

答案 0 :(得分:1)

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

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

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

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

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

您可能希望将(1)更改为某种树或哈希结构,因此您可以比搜索所有Order更快地找到给定Order特定位置{{1}}的位置(如果这在您的设计环境中有意义的话)。

答案 1 :(得分:1)

这是不一样的。

1)表示Order可以包含多个OrderPositions,并且无法避免在多个OrderPosition 中找到 Orders

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

如果我们谈论"composition"/"aggregation"(OOP)

,还有其他影响