依賴 關聯 聚合 組合

2021-08-27 18:52:06 字數 817 閱讀 8903

依賴 < 關聯 < 聚合 < 組合

1 依賴

語義:a use b。依賴是區域性變數、形參、靜態方法、返回引數

生命週期中物件依賴關係:當f方法被呼叫時,a與b產生依賴關係,當呼叫結束,依賴關係結束

class a

}a 虛線箭頭指向 b

2 關聯

class soldier

}語義:a has b

士兵可以有槍,也可以沒有槍,是一種鬆散的耦合關係。而且士兵可以通過setgun()隨時換一把槍

生命週期中物件依賴關係:士兵和槍各自不負責對方的生命週期,士兵銷毀了槍任然在,槍銷毀了士兵任然在。只不過只有士兵銷毀後,士兵與槍的依賴關係才回解除。策略模式應當典型的關聯(策略可以隨時替換)

a實線箭頭指向b

3 聚合

語義:a owns b

a擁有b的引用,a和b有明顯的從屬關係,但是a任然不負責b的生命週期的管理。b任然可能被其它的物件所引用。

聚合和關聯需要根據具體語義區別,典型例子:

狼群類 和 狼 就是聚合例子。容器list和容器中的元素,應當是一種典型的聚合關係

a 空心菱形連線 b

4 組合

語義:b is a part of b

b需要負責a的生命週期的管理,例如人和人腦:

class person

public person(brain brain)

}人腦在一般情況下,應答完全屬於乙個人。即使使用spring注入人腦,也應該使用構造器注入才合理,使人一旦建立,就是有腦的狀態。這也說明人管理了人腦的宣告週期。

a(person)實心菱形連線 b(heart)

依賴 關聯 聚合 組合 的區別

1.例項化 依賴 a將b作為區域性變數進行使用.程式1 void a foo 2.關聯 a與b存在一定的關係.這裡只考慮單向導航.關聯在 中有多種表現形式.第一種,作為引數 程式2 void a foo b b b b or b b 第二種,作為成員變數 程式3 class a void foo p...

聚合,組合,依賴

1.聚合 是關聯關係的一種特例,體現的是整體與部分擁有的關係,即 has a 的關係,此時整體與部分之間可以分離。cpp view plain copy 學校 class school 學生 class student 可以看到 student 類中包含了乙個 school 類的物件 指標,而且在建...

關聯 聚合 組合

關聯 聚合 aggregation 以及組合 composition 的區別?涉及到uml中的一些概念 關聯是表示兩個類的一般性聯絡,比如 學生 和 老師 就是一種關聯關係 聚合表示 has a 的關係,是一種相對鬆散的關係,聚合類不需要對被聚合類負責,如下圖所示,用空的菱形表示聚合關係 從實現的角...