我在类图上做了一个赋值,下面显示了类Order
和Menu Item
之间的关联。链接应该是聚合(弱)还是组合(强)?
我很困惑因为我看过显示聚合的例子。我觉得它应该是组合,因为Order
必须添加至少1 Menu Item
。我错了吗?
答案 0 :(得分:1)
链接应该是聚合(弱)还是组合(强)?
两者都可以。主要区别在于:
如果是作文:
一旦Order对象被破坏,MenuItem对象就会被破坏。
C ++示例:
class Order {
MenuItem menus[NUMBER_OF_MENUS];
};
如果是聚合:
MenuItem对象的生命周期与Order对象的生命周期无关。
C ++示例:
class Order {
MenuItem* menus[NUMBER_OF_MENUS];
};
所以这是一个设计决定。也可能还取决于实现语言。例如,在Java中,两者之间没有区别,所有对象变量都是引用。
答案 1 :(得分:0)
很多都取决于背景。让我们用一个例子来说明你的不同之处。
假设您正在汽车工厂组装Car对象。 Car对象有两个Axle对象,四个Wheel对象,一个Motor对象,依此类推。所有这些对象在整个汽车的环境中只有意义(一旦你把它们放进去,它们就会留在那里)。这是作文。
现在,假设您在垃圾场中有一个Car对象。 Car对象具有相同的东西,但您可以将车轮或车轴或电机拉出来并单独出售。在这种情况下,每个部件的寿命与汽车的寿命不同。这是聚合。