2018 2 11 PHP設計模式 組合器模式

2021-10-05 07:27:13 字數 2134 閱讀 8220

layout

title

date

author

desc

in_head

post

php設計模式之組合器模式

2018-02-11 20:00:02 +0800

南丞

設計模式(design pattern)是一套被反覆使用、多數人知曉的、經過分類編目的、**設計經驗的總結。使用設計模式是為了可重用**、讓**更容易被他人理解、保證**可靠性。設計模式於己於他人於系統都是多贏的;設計模式使**編制真正工程化;設計模式是軟體工程的基石脈絡,如同大廈的結構一樣。

<?php

// 定義:將物件以樹形結構組織起來,以達成「部分-整體」的層次結構,使得客戶端對單個物件和組合物件的使用具有一致性

header("content-type: text/html; charset=utf-8");

/** * 抽象

*/abstract class company

public function add($composite)

public function delete($composite)

public function dump($length)

}/**

* 具體化 - 枝節點 公司

*/class subcompany extends company

//刪除乙個節點物件

public function delete($company)

}# 列印物件組合

public function dump($length = 1)

echo $hr . $this->name . "

"; foreach ($this->sub_companys as $val)

}}/**

* 具體化 葉子節點 部門

*/class dept extends company

// 增加乙個節點物件

public function add($company)

//刪除乙個節點物件

public function delete($company)

// 列印物件組合

public function dump($length)

echo $hr.$this->name. "

"; }

}# 建立一級根節點

$root = new subcompany('總部');

$root->add(new dept("財務部"));

$root->add(new dept("技術部"));

$root->add(new dept("商務部"));

$root->add(new dept("採購部"));

$root->dump();

echo '

';# 建立二級節點,實際上在沒有關聯到總部之前,分公司還是一級節點

$guangzhou = new subcompany('廣州分公司');

$guangzhou->add(new dept("分公司財務部"));

$guangzhou->add(new dept("分公司技術部"));

$guangzhou->add(new dept("分公司商務部"));

$guangzhou->add(new dept("分公司採購部"));

$guangzhou->dump();

echo '

';# 向一級節點關聯二級節點

$root->add($guangzhou);

$shanghai = new subcompany('上海分公司');

$shanghai->add(new dept("分公司財務部"));

$shanghai->add(new dept("分公司技術部"));

$shanghai->add(new dept("分公司商務部"));

$shanghai->add(new dept("分公司採購部"));

$shanghai->dump();

echo '

';# 向一級節點關聯二級節點

$root->add($shanghai);

$root->dump();

設計模式 結構型設計模式 6 組合模式(php)

結構型設計模式 組合模式 組合模式 composite pattern 屬於類的結構型模式之一,在樹型結構中,組合模式定義了乙個抽象構建類,它既可以代表葉子,又可以代表容器 子節點 而客戶端針對該抽象構建類進行程式設計,無需知道它道理表示的是葉子還是容器,可以對其進行統一處理。同時容器物件與抽象構件...

php設計 PHP常用設計模式

1 單例模式指在整個應用中只有乙個物件例項的設計模式 class single public rand static private instance 類直接呼叫 final private function construct private防止外部new this rand mt rand 1,...

PHP設計模式 工廠設計模式

工廠模式,如其名稱一樣,就是乙個工廠,用於建立產品。使用工廠模式的好處就是請求者只需要發出請求,具體的例項化過程交給工廠模式,省去了new的過程。並且如果後期開發,類名發生變化,只需要調整工廠模式中一行new相關 不需要修改一大堆 最簡單的工廠模式,實際上就是乙個switch case結構,通過傳入...