看到不少朋友讨論組合與聚合的異同,我覺得有兩個要點決定了組合與聚合的選用:
共享性 組合中各個子件是被宿主獨占使用,執行個體間不存在共享同一個子件。
聚合中各個子件可以由不同的執行個體共享使用。
生命周期 組合中宿主負責建立和釋放其子件。
聚合中宿主不需要負責建立和釋放其子件,隻有使用權。
<code></code>
<code>下圖是一個組合的類圖示例:</code><code></code>

<code>選擇使用組合或是聚合,取決實際應用中的類之間的關系。同樣以電腦為例,對于電腦制造商而言,它與子件間就是聚合關系,因為各種元件是可以共同的,并且電腦損壞時,其中的元件仍然是可以使用的。而如果對于購買了電腦的使用者而言,當電腦損壞時,整台電腦會被處理掉,這時就是組合關系。</code>