- 聚合和組合的區別
- 聚合關系是“has-a”關系,聚合的整體與部分間關系較弱,
其代表部分的對象與代表整體的對象生存期無關,刪除了代表整體的對象不一定會刪除代表部分的對象. - 組合關系是“contains-a”關系,組合的整體與部分間關系較強,
其代表部分的對象與代表整體的對象具體相同的生存期,當刪除代表整體的對象,同時也會刪除了代表部分的對象.
- 聚合與組合示例
- 《大話》里的大雁的例子很貼切大雁喜歡熱鬧害怕孤獨 所以它們一直過着群居的生活 這樣就有了雁群
- 每一只大雁都有自己的雁群,每個雁群都有好多大雁,
大雁不會因為它們的群主將雁群解散而無法生存,大雁與雁群的關系就可以稱之為聚合 - 每只大雁都有兩只翅膀,而當大雁掛了雁翅也就不能單獨生存了,大雁與雁翅的關系就叫做組合
- 聚合與組合的類圖
- 聚合示例類圖:
- 組合示例類圖:
- 聚合與組合示例代碼
- 聚合示例代碼
public class GooseGroup { public Goose goose; public GooseGroup(Goose goose) { this.goose = goose; } }
- 組合示例代碼
public class Goose { public Wing wing; public Goose() { wing =new Wing(); } }