关联和聚集的相同之处:当对象A和对象B之间存在依赖关系时,对象A都有可能调用对象B的方法。
1)依赖关系的特征
对于两独立的系统,当A系统负责构造B系统的实例,或者依赖另一个系统的服务时,这两系统之间主要体现为依赖关系。
例如:自行车Bicycle和打气筒Pump
public class Bicycle{
/*给轮胎打气*/
public void expand(Pump pump){
pump.blow();
}
}
2)关联关系的特征
对于两独立的系统,当A系统的实例和B系统的实例存在特定的对应关系时,该两系统之间为关联关系。(从业务上讲)
例如:人和Person和自行车Bicycle
public class Person{
private Bicycle bicycle;//主人的自行车
public Bicycle getBicycle(){
return bicycle;
}
public void setBicycle(Bicycle bicycle){
this.bicycle=bicycle;
}
/**骑自行车去上班*/
public void goToWork(){
bicycle.run();
}
}
?以上关联关系中存在依赖关系,主人依赖自行车去上班。
?从业务上讲,A依赖B,A依赖B才能成功;A关联B,A和B具有特殊的关系或者特殊的利益,A的成功不一定需要B。
3)聚集关系的特征
当系统A加入到系统B中,成为系统B的组成部分时,系统B和系统A为聚集关系。
例如:自行车和响铃,电脑和主板
public class Bicycle{
private Bell bell;
public Bell getBell(){
return bell;
}
public void setBell(Bell bell){
this.bell=bell
}
/**发出铃声*/
public void alert(){
bell.ring();
}
}