上面是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中就是接口