天天看點

組合與聚合的選用 (Composition & Aggregation)

看到不少朋友讨論組合與聚合的異同,我覺得有兩個要點決定了組合與聚合的選用:

共享性 組合中各個子件是被宿主獨占使用,執行個體間不存在共享同一個子件。

  聚合中各個子件可以由不同的執行個體共享使用。

生命周期 組合中宿主負責建立和釋放其子件。

  聚合中宿主不需要負責建立和釋放其子件,隻有使用權。

<code></code>

<code>下圖是一個組合的類圖示例:</code><code></code>

組合與聚合的選用 (Composition &amp;amp; Aggregation)

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

上一篇: 數組的誤用
下一篇: XCode小技巧