一、概念
合成/聚合復用原則是在一個新的對象里面使用一些已有的對象,使之成為新對象的一部分;新的對象通過向這些對象的委派達到復用已有功能的目的。
概括:要盡量使用合成/聚合,盡量不要使用繼承。
二、依賴和關聯
依賴是類與類之間的連接,表示一個類依賴於另外一個類的定義。依賴關系僅僅描述了類與類之間的一種使用與被使用的關系,在Java中體現為局部變量、方法的參數或者是對靜態方法的調用。
關聯是類與類之間的連結。關聯關系使一個類知道另外一個類的屬性和方法。關聯可以是雙向的,也可以是單向的。體現在Java中,關聯關系是通過成員變量來實現的。
三、聚合和合成
聚合用來表示“擁有”關系或者整體與部分的關系。代表部分的對象有可能會被多個代表整體的對象所共享,而且不一定會隨着某個代表整體的對象被銷毀或破壞而被銷毀或破壞,部分的生命周期可以超越整體。例如,班級和學生,當班級刪除后,學生還能存在,學生可以被培訓機構引用。
合成用來表示一種強得多的“擁有”關系。在一個合成關系里,部分和整體的生命周期是一樣的。一個合成的新對象完全擁有對其組成部分的支配權,包括它們的創建和湮滅等。使用程序語言的術語來說,合成而成的新對象對組成部分的內存分配、內存釋放有絕對的責任。例如,一個人由頭、四肢和各種器官組成,人與這些具有相同的生命周期,人死了,這些器官也就掛了。房子和房間的關系,當房子沒了,房間也不可能獨立存在。