摘要:教你如何方便記憶和理解類圖里的線條的小妙招,趕緊學起來。
空白三角:和類的父子關系有關
父子關系,對應於java
就是 類的派生(泛化) ,和接口的 實現。
且箭頭從兒子指向父親
因為接口類似於虛函數,而類是實體,所以實現是虛線,派生是實線(我是這么理解的,你也可以在其他角度理解強弱)
二叉箭頭:和類與類的使用關系相關
即對於類A,他是怎么調用B的?
java中類和類的調用關系,就2種方式:
一種是在自己的方法中,把其他類作為參數調用, 這個叫做 依賴dependency
即是由於要方法調用,才用到B的引用。用好了就再見了。
一種是作為私有成員或者靜態成員,去調用類對象的方法,這個叫做 關聯association
即不僅要用,我還要一直持有你!
關聯必須要持有對方類的引用,這個依賴強度比 方法調用要強很多。
所以關聯是實現,依賴是虛線。
菱形箭頭:和類與類的包含關系相關,誰是誰的成員
這里存在誰大誰小的關系,菱形箭頭從小的指向大的。
java種類和類的包含關系就2種情況:
- 一種是外部import進來的類作為成員,這個叫 聚合aggregation
B是可以獨立存在的,所以是外部import進來
大家只是為了合力做一件事才在一起, 不爽了也可以出去獨立做事或者給別人做勢。或者理解為把一堆同級別的事物打包,打成一個大的團體
注意聚合的線頭為什么會帶一個二叉箭頭?因為聚合一般是作為成員屬性存在的,也相當於一種關聯關系
- 一種是內部私有類作為成員, 這個類只能內部使用,不能開放給外部去用。這個就叫 組合Compostition
即我就是你的專有零件,離開了你我就成廢鐵。
因為組合的依賴關系特別強,離開了就不行了,所以組合是實心的菱形箭頭, 聚合是空心的菱形箭頭。
類的依賴關系大小記憶
- 類的繼承關系 > 類的包含關系 > 類的調用關系 .
再加上實線大於虛線,實心大於空心, 就能推出一下關系: - 泛化(派生) = 實現 > 組合 > 聚合 > 關聯 > 依賴。
本文分享自華為雲社區《開發者技巧之如何方便記憶和理解類圖里的線條》,原文作者:breakDraw 。