类之间关联关系的种类
按照依赖强度排序:
(强)实现 == 泛化 > 组合 > 聚合 > 关联 > 依赖
(弱)
关系之间的区别
实现
代码描述:B 实现了接口 A
public interface A {
void test();
}
public class B implements A{
@Override
public void test() {
}
}
泛化
代码描述:B 继承了 A
public class A {
}
public class B extends A{
}
组合
代码描述:A 中的属性有 B 且 A 的构造方法入参中没有 B。B 实例化时机由 A 控制,也就是 B 不能单独于 A 存在。
public class A {
private B b;
public A() {
this.b = new B();
}
public void function(){
b.function();
}
}
public class B {
public void function(){
}
}
聚合
代码描述:A 中的属性有 B 且 A 的构造方法入参中有 B。B 实例化的时机不交给 A 控制,也就是 B 可以单独于 A 存在。
public class A {
private B b;
public A(B b) {
this.b = b;
}
public void function(){
b.function();
}
}
public class B {
public void function(){
}
}
关联
代码描述:只要满足 B 是 A 的一个属性的要求即可,对于 B 生命周期控制没有要求。
public class A {
private B b;
public void function(){
b.function();
}
}
public class B {
public void function(){
}
}
依赖
代码描述:B 不是 A 的属性。
public class A {
public void function(B b){
b.function();
}
}
public class B {
public void function(){
}
}