因为要看tomcat的源码,这里回顾一下类图的关系(泛化、实现、依赖、关联、聚合、组合)
泛化:带空心三角实线,三角箭头指向父类
继承的关系,表示特殊与一般的关系
public abstract class Person{
public Integer age;
public String name;
public abstract void say();
}
public class Man extends Person{
@Override
public void say() {
}
}
public class Woman extends Person{
@Override
public void say() {
}
}

实现(Implementation):带空心三角虚线,三角箭头指向接口
类与接口的关系,表示类是接口的实现
public interface Person{
void say();
}
public class Man implement Person{
@Override
public void say() {}
}
public class Woman implement Person{
@Override
public void say() {}
}

关联:带普通箭头的实线,箭头指向被拥有者
类之间的一种关系,是一种拥有的关系,使一个类知道另一个类的属性和方法,一个类作为另一个类的成员变量
双向关联:两个类的成员变量中都包含对方
单向关联:
自关联:
A.java
public class A{
public B b;
}
B.java
public class B{
}

聚合:空心菱形实线,菱形指向整体 (关联关系的特殊形式)
整体与部分的关系,部分可以离开整体而单独存在,一个类作为另一个类的成员变量。
组合:实心菱形实线,菱形指向整体(关联关系的特殊形式)
整体与部分的关系,部分不能离开整体而单独存在,成员变量
代码层面来看,聚合与组合关系是一样的
Head.java
public class Head{
public Double height;
}
Person.java
public class Person{
public void say(Head head){
System.out.println(head.height);
}
}

依赖:带箭头的虚线,箭头指向被使用者
是一种使用的关系,一个类的实现需要另一个类的协助,在方法的参数中,类A的方法需要类B作为参数
A.java
public class A{
public void say(B b){
System.out.println(b.name);
}
}
B.java
public class B{
public String name;
}

泛化和实现这两个关系很容易认出虚线就是类与接口的实现关系,实线是类与类的继承关系
组合、聚合、关联、依赖这四种关系大致是语义上的区别,代码层面很难看出有什么区别。
关系表现的强弱程度为:组合>聚合>关联>依赖
文章转载自明王足迹,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。




