我的代码中有以下场景,想要了解类之间的聚合,组合,关联关系。
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()
{
}
}
答案 0 :(得分:1)
简明扼要
关联 - 有两个对象彼此了解,但它们不会影响彼此的生命周期。
成分 - 有两个类: A 和 B 。类的对象 A 包含 B类对象,如果没有 B 类,则无法逻辑。
聚合 - 是“有一个”关联关系的变体;聚合比关联更具体。它是一种代表部分整体或部分关系的协会。
在您的示例中,1和3是成分,因为它们包含 B类对象。示例4是关联,因为它< strong>仅知道关于 B类而仅将其对象用作局部变量。示例2是聚合。
您可以在wiki中阅读更多内容 https://en.wikipedia.org/wiki/Class_diagram
编辑:
撰写与汇总之间的区别。
作文关系:在尝试表示真实世界的整体关系时,例如发动机是汽车的一部分 聚合关系:表示软件或数据库关系时,例如汽车模型发动机ENG01是汽车模型CM01的一部分,因为发动机ENG01也可能是不同汽车模型的一部分。
在您的示例1中,您在类A中创建了B类的对象。基于您的代码,您无法将类B的创建对象提供给A类的另一个对象。 但是在你的例子2中,你给对象B作为参数。所以你可以创建许多A类对象并给它们相同的对象B