四种关系详解析
- 依赖 (Dependency)
- 关联 (Association)
- 聚合 (Aggregation)
- 组合 (Composition)
先列出一张UML关系图
依赖
学生上学这个功能怎么实现呢?学生可以通过骑自行车去上学。
public class Student {
public void goToSchool() {
Bike bike = new Bike();
bike.drive(this);
}
}
学生依赖自行车
关联
组合(Composition)
说说“轮胎”,“发动机”与“小汽车”的关系。
从oo的思想来理解,“轮胎”和“发动机”是“小汽车”的组成部分。用java代码表示就是:
public class Car {
private Tyre tyre = new Tyre();
private Engine engine = new Engine();
}
聚合(Aggregation)
对于一个班级来说学生可以来也可以离开,来去自如。
public class Class {
private Student student;
public Student getStudent() {
return student;
}
public void setStudent(Student student) {
this.student = student;
}
}
组合和聚合小结
关于“组合”和“聚合”怎么来区分还是比较麻烦的,但是看了一篇文章之后:
处于聚合关系的两个类生命周期不同步,则是聚合关系;处于组合关系的两个类的生命周期同步;
这样来区分就容易多了。
http://www.cnblogs.com/floodpeak/archive/2008/02/27/1083533.html