今天看了看
深入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 組合 也表示類之間整體和...
組合和聚合舉例說明 組合關係和聚合關係
組合關係和聚合關係 浙江廣播電視大學 章一鳴年月日 一 組合關係和和聚合關係的提出 組合關係和聚合關係是現代語言學中的乙個基本原理。語言學綱要 上說 符號和符號組合起來的關係稱為符號的 組合關係。在鏈條的某一環節上能夠互相替換的符號具有某種相同的作用,它們自然地聚集成群。它們彼此的關係叫做聚 合關係...