MyBatis源码的学习()---关于UML常见的类图关系

MyBatis源码的学习()---关于UML常见的类图关系_第1张图片

上面是MyBatis中的一个适配器设计模式的类图。好多东西总是忘记,所以专门记录一下。

依赖关系:依赖(dependency),在代码中,某个类的方法通过局部变量,方法参数或者对静态方法的调用来访问另一个类(被依赖类)中的某些方法来完成一些任务.

比如:我们的PlainMethodInvoker类中的invoke方法

@Override
    public Object invoke(Object proxy, Method method, Object[] args, SqlSession sqlSession) throws Throwable {
      return mapperMethod.execute(sqlSession, args);
    }

MyBatis源码的学习()---关于UML常见的类图关系_第2张图片

关联关系:关联(association)关系,用于表示一类对象与另一类对象之间的联系,使一个类知道另一个类的属性和行为.关联关系有单向关联,双向关联,自关联。

代码:通常是将一个类的对象作为另一个类的成员变量来实现.

比如:

private static class PlainMethodInvoker implements MapperMethodInvoker {
    //关联关系,PlainMethodInvoker 持有MapperMethod成员变量
    private final MapperMethod mapperMethod;

    public PlainMethodInvoker(MapperMethod mapperMethod) {
      super();
      this.mapperMethod = mapperMethod;
    }

    @Override
    public Object invoke(Object proxy, Method method, Object[] args, SqlSession sqlSession) throws Throwable {
      return mapperMethod.execute(sqlSession, args);
    }
  }

 关联关系又细分为:组合关系和聚合关系

聚合关系:聚合(aggregation)关系是关联关系的一种,是强关联关系,是整体和部分的关系,是has-a的关系.
聚合关系也是通过成员对象来实现,其中成员对象是整体对象的一部分,但是成员对象可以脱离整体对象单独存在。

组合关系:组合(composition)关系也是关联关系的一种,也是表示整体和部分的关系,整体对象控制部分对象的生命周期,一旦整体对象不存在,部分对象也将不存在.部分对象不能脱离整理对象单独存在,比聚合关系更强。

MyBatis源码的学习()---关于UML常见的类图关系_第3张图片MyBatis源码的学习()---关于UML常见的类图关系_第4张图片MyBatis源码的学习()---关于UML常见的类图关系_第5张图片

 泛化关系:对应JAVA中就是继承

实现关系:对应JAVA中就是接口

MyBatis源码的学习()---关于UML常见的类图关系_第6张图片

 

你可能感兴趣的:(Mybatis源码学习)