国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 課堂 > FAQ問答 > 正文

什么是組合模式?(舉例說明)

2020-03-22 17:59:42
字體:
來源:轉載
供稿:網友
組合模式 (Composite Pattern)

組合模式:允許客戶將對象組合成樹形結構來表現 整體/部分”層次結構。組合能讓客戶以一致的方式處理個別對象以及對象組合。

組合模式讓我們能用樹形方式創建對象的結構,樹里面包含了組合以及個別的對象。使用組合結構,我們能把相同的操作應用在組合和個別對象上。換句話說,在大多數情況下,我們可以忽略對象組合和個別對象之間的差別。

包含其他組件的組件為組合對象;不包含其他組件的組件為葉節點對象。

組合模式為了保持”透明性“,常常會違反單一責任原則。也就是說,它一方面要管理內部對象,另一方面要提供一套訪問接口。

當組合模式接口里提供刪除子節點的方法時,在組件里有一個指向父節點的指針的話,實現刪除操作會比較容易。

以一個軍隊的戰斗力計算為例演示組合模式

軍隊由步兵、炮兵、特種兵組成,他們都具備一個能力就是戰斗并具備各自的戰斗力。我們通過他們組合成一個軍隊并完成戰斗力的計算。

 ?php//抽象士兵類interface soldier{html' target='_blank'>public function fire();//步兵 攻擊力5class bubing implements soldier{public function fire(){return 5;//炮兵 攻擊力8class paobing implements soldier{public function fire(){return 8;//特種兵 攻擊力 12class tezhongbing implements soldier{public function fire(){return 12;//軍隊類實現兵種的組合class arm{//存儲作戰兵種的數組 private $soldier = array();//添加作戰兵種public function add($soldierType){//獲取對應的兵種對象$soldier = new $soldierType();//保存進數組利用數組的鍵記錄兵種 便于刪除$this- soldier[$soldierType] = $soldier;//刪除兵種public function delete($soldierType){if(isset($this- soldier[$soldierType])){unset($this- soldier[$soldierType]);//計算并輸出戰斗能力public function show(){$zhantouli = 0;foreach($this- soldier as $v){$zhantouli += $v- fire();echo 軍隊的戰斗力: .$zhantouli;$arm = new arm();$arm- add( bubing $arm- add( paobing $arm- show();$arm- delete( paobing $arm- show();

以上就是什么是組合模式?(舉例說明)的詳細內容,PHP教程

鄭重聲明:本文版權歸原作者所有,轉載文章僅為傳播更多信息之目的,如作者信息標記有誤,請第一時間聯系我們修改或刪除,多謝。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 天全县| 秭归县| 永城市| 西平县| 克拉玛依市| 江北区| 奇台县| 武隆县| 乳山市| 乐东| 始兴县| 新平| 湖口县| 黄龙县| 台东市| 宜州市| 邻水| 宁都县| 新乐市| 中超| 丽江市| 祁门县| 龙里县| 肇源县| 大渡口区| 克拉玛依市| 剑阁县| 兰州市| 肇州县| 屏南县| 益阳市| 新化县| 茶陵县| 田东县| 云霄县| 晋城| 天等县| 望城县| 阳朔县| 浦北县| 平塘县|