一个物体可以比另一个物体更活跃......它是什么意思?

时间:2013-10-22 18:21:04

标签: c# design-patterns

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

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

我根本不理解“ OUTLIVE ”的概念,即使我理解B类型是在字段形式的A中(属性......等) )。

这个“活跃”的意思是什么?在这种情况下,B可以比A?

更活跃

2 个答案:

答案 0 :(得分:5)

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

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

因此,此处使用生命周期来定义可见性/范围。有点落后的推理。

答案 1 :(得分: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
    }
}