一、聚合的定义
当一个类的实例作为另一个类的属性,称之为“ 对象聚合 ”。
假设 B 类中的实例 b 作为 A 类的一个属性,在创建 A 类的时候并不会同步创建 B 类对象,当且仅当外部对象传入时才创建,换句话说,B 类对象并不是由 A 类对象的创建的。 因此,A 类与 B 类之间并不是“命运共同体”的关系,而是一种“亲戚”关系,B 类不会因为 A 类的消亡而消亡。
由此可见,聚合中整体与部分的关系是一种较为松散的关系。
//聚合的代码实例
//Student 类为 B 类
class Student{
}
//School 类为 A 类
class School{
private Student student;//声明但不定义
public setStudent(){//通过外部定义
student = new Student();
}
}
//学校与学生的关系,就如同聚合的A类与B类的关系。
//当一个新的学校成立时(相当于A类的创建),通过家长的报名将孩子送到学校中(外部条件),从而学校中有了学生(B类的创建);
//当一所学校倒闭的时候(A类的消亡),学生从这所学校到另一所学校学习(B类拥有的其他引用)。
二、组合的定义
当一个类的实例成为另一个类的成员变量,表示两个类之间存在着一种“ has a ”的关系。
假设 B 类中的实例 b 作为 A 类的一个成员变量,在创建 A 类的时候 B 类对象同步产生,故 B 类对象是由 A 类对象唯一创建的