在组合关系中存储对组件类的引用

时间:2015-07-14 05:41:18

标签: composition object-oriented-analysis

我在看作文。 “存储对组件的引用”是什么意思?

对我而言,这意味着将有两个类,并且将从另一个类中实例化一个类。它是否正确?你怎么能代表一种构成关系呢?

这个特定的例子与聚合有何不同? (或者需要一个对象存储对其范围内创建的实例化类的引用。)

即。 (Ruby语法)

class A
    def initialize
        #stuff
    end
end


class B
    def initialize
        @many_a_instances = []
    end

    def attach_an_A
        @many_a_instances << A.new
    end
end

在B类中定义A类会更好吗?

1 个答案:

答案 0 :(得分:0)

鉴于雷鸣般的热情,问题是回答者......答案是这样的(基于与同事和朋友的对话):

如何定义类在某种程度上独立于不同类的实例之间的关系(这取决于类的实例化方式)。

如果实例定义了对实例的引用,则引用实例的生命周期取决于保存引用的对象。这定义了一种组合关系。

但是,如果您实例化一个对象,然后将对该对象的引用传递给另一个类,那么这将是一个聚合的示例。因为两个实例化对象的生命周期彼此独立,但是一个对象仍然引用另一个对象。

所以类相同,但实例之间的关系不同。并且就定义类的位置而言,这可能是特定于用例的。

任何更好的答案都会被标记为接受此答案:)