3

我正在研究设计模式。在 UML 描述聚合中,它定义为:A 有 B,B 可以比 A 更长寿。要描述的元素是:

A<>-----B(有趣的箭头,应该是菱形)

即使我知道B类型在A中以字段(属性...等)的形式存在,我也根本不了解“ OUTLIVE ”的概念。

他们对这个“长寿”是什么意思?在哪种情况下 B 可以比 A 长寿?

4

2 回答 2

5

这意味着 B 是/可以以某种方式从 A 外部引用。

与 Composition 形成对比更容易,其中 B 完全由 A“拥有”,然后当 A 变得无法访问时,B 也自动成为垃圾。

所以这里使用生命周期来定义可见性/范围。有点落后的推理。

于 2013-10-22T18:24:58.303 回答
2

考虑以下代码。A 需要一个 B 来实例化,但销毁 A 并不会销毁 B。

当类 C 创建一个新的 A 时,它给它一个对它已经拥有的 B 的引用。现在,即使 A 被破坏、超出范围等。B 仍然“活着”。

class A
{
    private B b;

    public A(B bType)
    {
        this.b = bType;
    }
}

class B
{ 
}

class C
{
    private B b = new B();

    private A a;

    public C()
    {
        a = new A(b);
        a = null; // b is still alive
    }
}
于 2013-10-22T18:27:10.053 回答