關於對聚合和組合的理解

2021-06-28 01:23:21 字數 3104 閱讀 1285

今天看了看

深入php++物件導向、模式與實踐_第三版

其中看到「聚合」跟「組合」的概念,對此理解也比較模糊

文中是這樣說的:

首先是聚合

<?php 

/** * created by phpstorm.

* classname: aggregationa

* user: jan

* date: 14-9-12

* time: 下午12:18

* link:

*/namespace designpattern\******example\aggregation;

class aggregationa

public function addaggregation(aggregationinte***ce $aggregation)

public function getaggregationlist()

}

<?php 

/** * created by phpstorm.

* classname: aggregationb

* user: jan

* date: 14-9-12

* time: 下午12:18

* link:

*/namespace designpattern\******example\aggregation;

class aggregationb implements aggregationinte***ce

}

<?php 

/** * created by phpstorm.

* classname: aggregationc

* user: jan

* date: 14-9-12

* time: 下午2:34

* link:

*/namespace designpattern\******example\aggregation;

class aggregationc implements aggregationinte***ce

}

<?php 

/** * created by phpstorm.

* classname: aggregationinte***ce

* user: jan

* date: 14-9-12

* time: 下午2:38

* link:

*/namespace designpattern\******example\aggregation;

inte***ce aggregationinte***ce

類內聚了兩個類:分別是agregationb, agregationc 分別都實現了agregationinte***ce, 而且在實力agregationa的時候構造時例項化b和c。

再次是組合:

a類

<?php 

/** * created by phpstorm.

* classname: compositiona

* user: jan

* date: 14-9-12

* time: 下午12:25

* link:

*/namespace designpattern\******example\composition;

class compositiona

public function getcompositionb()

public function setcompositionc(compositionc $compositionc)

public function getcompositionc()

}

b類

<?php 

/** * created by phpstorm.

* classname: compositionb

* user: jan

* date: 14-9-12

* time: 下午12:25

* link:

*/namespace designpattern\******example\composition;

class compositionb implements compositionobjectinte***ce

}

c類

<?php 

/** * created by phpstorm.

* classname: compositionc

* user: jan

* date: 14-9-12

* time: 下午2:42

* link:

*/namespace designpattern\******example\composition;

class compositionc implements compositionobjectinte***ce

}

介面

<?php 

/** * created by phpstorm.

* classname: compositionobjectinte***ce

* user: jan

* date: 14-9-12

* time: 下午12:29

* link:

*/namespace designpattern\******example\composition;

inte***ce compositionobjectinte***ce

在例項化compositiona 的時候並不會直接例項化其他類,這裡只是清楚限定了compositionb類作為引數型別傳入setcompotionb方法,這裡理解的組合就是:有提供組合的方法提供外界指定的類進行自由組合,並且使用組合當中的方法。

以上僅是個人的理解,不知道這對類的關係有沒有幫助,最近在學習設計模式,概念有點模糊,還請各路英雄指點。感謝

對依賴 關聯 聚合和組合之間區別的理解

首先看一看書上對這四種關係的定義 依賴 dependency 關係是類與類之間的聯接。依賴關係表示乙個類依賴於另乙個類的定義。例如,乙個人 person 可以買車 car 和房子 house person類依賴於car類和house類的定義,因為person類引用了car和house。與關聯不同的是...

聚合和組合的區別

1 聚合 指的是整體與部分的關係。通常在定義乙個整體類後,再去分析這個整體類的組成結構。從而找出一些組成類,該整體類和組成類之間就形成了聚合關係。例如乙個航母編隊包括海空母艦 驅護艦艇 艦載飛機及核動力攻擊潛艇等。需求描述中 包含 組成 分為 部分 等詞常意味著聚合關係。2 組合 也表示類之間整體和...

組合和聚合舉例說明 組合關係和聚合關係

組合關係和聚合關係 浙江廣播電視大學 章一鳴年月日 一 組合關係和和聚合關係的提出 組合關係和聚合關係是現代語言學中的乙個基本原理。語言學綱要 上說 符號和符號組合起來的關係稱為符號的 組合關係。在鏈條的某一環節上能夠互相替換的符號具有某種相同的作用,它們自然地聚集成群。它們彼此的關係叫做聚 合關係...