理解聚合、关联、组合
Understanding the Aggregation, Association, Composition
我的代码中有以下场景,想了解 类 之间的聚合、组合、关联关系。
1)
class A : IDisposable
{
private B objB;
public A(B )
{
objB = new B();
}
public void Dispose()
{
objB.Dispose();
}
}
2)
class A : IDisposable
{
private B objB;
public A(B objB)
{
this.objB = objB;
}
public void Dispose()
{
}
}
3)
class A : IDisposable
{
private B objB;
public A()
{
}
public void Sample()
{
objB = new B();
}
public void Dispose()
{
if (objB != null)
{
objB.Dispose();
}
}
}
4)
class A : IDisposable
{
public A()
{
}
public void Sample()
{
using (B objB = new B())
{
//Do some operation
}
}
public void Dispose()
{
}
}
简洁
关联 - 有两个对象相互了解,但不能影响彼此的生命周期。
Composition - 有两个 classes:A 和 B .classA的对象包含aclassB对象,逻辑上不能 在没有 class 的情况下创建 B.
聚合 - 是"has a"关联关系的变体;聚合比关联更具体。它是代表部分-整体或部分关系的关联。
在您的示例中,1 和 3 是 Compositions,因为它们 contain class B object.Example 4是关联,因为它只知道关于class B和only 将它的对象用作本地 variable.Example 2 和 Aggregation.
更多内容可以在wiki中阅读
https://en.wikipedia.org/wiki/Class_diagram
已编辑:
组合和聚合之间的区别。
组成关系:当试图表示真实世界的整体-部分关系时,例如发动机是汽车的一部分。
聚合关系:表示软件或数据库关系时,例如汽车模型发动机 ENG01 是汽车模型 CM01 的一部分,因为发动机 ENG01 也可能是其他汽车模型的一部分。
在您的示例 1 中,您在代码中的 class A.Based 中创建了一个 class B 的对象,您不能提供 class 的创建对象B 到 class A 的另一个对象。
但是在您的示例 2 中,您将对象 B 作为 parameter.So 您可以创建 class A 的许多对象并为它们提供相同的对象 B
我的代码中有以下场景,想了解 类 之间的聚合、组合、关联关系。
1)
class A : IDisposable
{
private B objB;
public A(B )
{
objB = new B();
}
public void Dispose()
{
objB.Dispose();
}
}
2)
class A : IDisposable
{
private B objB;
public A(B objB)
{
this.objB = objB;
}
public void Dispose()
{
}
}
3)
class A : IDisposable
{
private B objB;
public A()
{
}
public void Sample()
{
objB = new B();
}
public void Dispose()
{
if (objB != null)
{
objB.Dispose();
}
}
}
4)
class A : IDisposable
{
public A()
{
}
public void Sample()
{
using (B objB = new B())
{
//Do some operation
}
}
public void Dispose()
{
}
}
简洁
关联 - 有两个对象相互了解,但不能影响彼此的生命周期。
Composition - 有两个 classes:A 和 B .classA的对象包含aclassB对象,逻辑上不能 在没有 class 的情况下创建 B.
聚合 - 是"has a"关联关系的变体;聚合比关联更具体。它是代表部分-整体或部分关系的关联。
在您的示例中,1 和 3 是 Compositions,因为它们 contain class B object.Example 4是关联,因为它只知道关于class B和only 将它的对象用作本地 variable.Example 2 和 Aggregation.
更多内容可以在wiki中阅读 https://en.wikipedia.org/wiki/Class_diagram
已编辑:
组合和聚合之间的区别。
组成关系:当试图表示真实世界的整体-部分关系时,例如发动机是汽车的一部分。
聚合关系:表示软件或数据库关系时,例如汽车模型发动机 ENG01 是汽车模型 CM01 的一部分,因为发动机 ENG01 也可能是其他汽车模型的一部分。
在您的示例 1 中,您在代码中的 class A.Based 中创建了一个 class B 的对象,您不能提供 class 的创建对象B 到 class A 的另一个对象。 但是在您的示例 2 中,您将对象 B 作为 parameter.So 您可以创建 class A 的许多对象并为它们提供相同的对象 B