泛化(Generalization)
可以简单理解为继承关系
java代码
public class ClassA { ... }
public class ClassB extends ClassA { ... }
IDEA类关系图
实现(Realization)
一般是指接口和实现类之间的关系
public interface A {...}
public class B implements A { ... }
依赖(Dependency)
它描述一个对象的修改会导致另一个对象的修改这样的关系。当表示一个事物使用另一个事物时,就运用依赖。
public class A {
public void doSomething(){
B classB=new B();
classB.test();
}
}
public class B {
public void test(){
System.out.println("这里是test");
}
}
public class A {
public void doSomething(B b){
b.test();
}
}
public class B {
public void test(){
System.out.println("这里是test");
}
}
注意:这个里少了create标记
聚合(Aggregation)
是一种包含关系,A类对象包含B类对象,B类对象的生命周期可以不依赖A类对象的生命周期,也就是说可以单独销毁A类对象而不影响B对象,比如课程与学生之间的关系。具体到Java代码就是下面这样
public class A1 {
private B b;
public A1(B b) {
this.b = b;
}
}
public class B {...}
从IDEA的类关系图中可以看到,存在依赖关系
public class A3 {
private List<B> bList;
public void doSomething(List<B> bList){
}
}
public class B {...}
组合(Composition)
也是一种包含关系,是一种特殊的聚合关系。A类对象包含B类对象,B类对象的生命周期依赖A类对象的生命周期,B类对象不可单独存在,比如鸟与翅膀之间的关系。具体到Java代码就是下面这样:
public class A2 {
private B b;
public A2() {
this.b = new B();
}
}
public class B {...}
从IDEA的类关系图中可以看到,存在依赖关系
关联(Association)
是一种非常弱的关系,包含聚合、组合两种关系。具体到代码层面,如果B类对象是A类的成员变量,那B类和A类就是关联关系。具体到Java代码就是下面这样:
//聚合关系
public class A {
private B b;
public A(B b) {
this.b = b;
}
}
//或者 聚合关系
public class A {
private List<B> bList;
public void doSomething(List<B> bList){
}
}
//或者 组合关系
public class A {
private B b;
public A() {
this.b = new B();
}
}
public class B {...}