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結構,通過傳入...