Composition(组合)与Aggregation(聚合) Composition(组合)与Aggregation(聚合)的区别:

Composition(组合)与Aggregation(聚合)的区别:

1. 若论两种关系表示的强弱程度,Composition应该更强一些,这也是为什么在图中会以一个实心菱形来代表。反之,聚合使用的是空心菱形。见下图.



2. Composition表示的是'Part-of'的关系, 以图1为例,Engine是Car的一部分。脱离Car的Engine是没有实在意义的;而Aggregation表示的是'Has-a'的关系,以图2为例,Person有一个Address,但是Addess的存在是不依赖Person的,换句话说,地址本身就有其独立存在的意义,有没有人都是没有关系的。

Compostion代码示例:

public class Engine  
{  
 . . .   
}  
  
public class Car  
{  
    Engine e = new Engine();  
    .......  
}

Aggregation代码示例:


public class Address  
{  
 . . .  
}  
  
public class Person  
{  
     private Address address;  
     public Person(Address address)  
     {  
         this.address = address;  
     }  
     . . .  
}
可以看到,Engine的生命周期是与Car一致的,何时Car被回收了,那Engine也就不存在了。但是反观Address,它是在Person之外创建的,所以即使Person被回收了,Address也不一定马上也会回收。


猜你喜欢

转载自blog.csdn.net/zqxhit1234/article/details/80782985