MyBatis源碼的學習()---關於UML常見的類圖關係

上面是MyBatis中的一個適配器設計模式的類圖。好多東西總是忘記,所以專門記錄一下。

依賴關係:依賴(dependency),在代碼中,某個類的方法通過局部變量,方法參數或者對靜態方法的調用來訪問另一個類(被依賴類)中的某些方法來完成一些任務.

比如:我們的PlainMethodInvoker類中的invoke方法

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

關聯關係:關聯(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)關係也是關聯關係的一種,也是表示整體和部分的關係,整體對象控制部分對象的生命週期,一旦整體對象不存在,部分對象也將不存在.部分對象不能脫離整理對象單獨存在,比聚合關係更強。

 泛化關係:對應JAVA中就是繼承

實現關係:對應JAVA中就是接口

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章