我正在研究设计模式。在 UML 描述聚合中,它定义为:A 有 B,B 可以比 A 更长寿。要描述的元素是:
A<>-----B(有趣的箭头,应该是菱形)
即使我知道B类型在A中以字段(属性...等)的形式存在,我也根本不了解“ OUTLIVE ”的概念。
他们对这个“长寿”是什么意思?在哪种情况下 B 可以比 A 长寿?
我正在研究设计模式。在 UML 描述聚合中,它定义为:A 有 B,B 可以比 A 更长寿。要描述的元素是:
A<>-----B(有趣的箭头,应该是菱形)
即使我知道B类型在A中以字段(属性...等)的形式存在,我也根本不了解“ OUTLIVE ”的概念。
他们对这个“长寿”是什么意思?在哪种情况下 B 可以比 A 长寿?
这意味着 B 是/可以以某种方式从 A 外部引用。
与 Composition 形成对比更容易,其中 B 完全由 A“拥有”,然后当 A 变得无法访问时,B 也自动成为垃圾。
所以这里使用生命周期来定义可见性/范围。有点落后的推理。
考虑以下代码。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
}
}