OOP关联的哲学概念
本文关键字:哲学 关联 OOP | 更新日期: 2023-09-27 18:12:14
我想知道以下类之间关联的可能性之间的利弊。我知道这是一个非常普遍的问题,取决于具体情况的需要但我想知道,作为一个一般的哲学问题,两者的区别是什么
1)
class Order
{
IList<OrderPosition> Positions;
}
class OrderPosition
{
}
2)
class Order
{
}
class OrderPosition
{
Order Order;
}
甚至还有第三种选择来创建双向关联,但我猜这是浪费内存。
这是不一样的
1)意味着一个Order
可以有多个OrderPositions
,并且不能避免一个 OrderPosition
可以在多个Orders
中找到。
2)表示一个OrderPosition
只能包含在一个Order
中。
如果我们谈论"组合"/"聚合"(OOP),还有其他含义
假设有一些外部因素阻止一个位置在多个Order
s中出现,或者在(1)中多次出现在同一个Order
中(因为这在(2)中不会发生)(根据polkduran的回答)…
这完全取决于具体情况——问问你自己最常执行的操作是什么,这将指向你想要的设计。
当您需要快速找到给定Order
的所有位置时,使用(1)。
当你需要快速找到给定位置的Order
时,使用(2)。
在许多真实世界的情况下,使用这两种方法绝对不会浪费内存,因为你希望能够快速找到给定位置的Order
和Order
的所有位置。
您可能希望将(1)更改为某种树或散列结构,这样您就能够找到给定Order
的特定位置,而不是搜索Order
的所有位置(如果这在您的设计上下文中有意义)。