這篇文章介紹的內容是關於PHP設計模式之組合模式,有著一定的參考價值,現在分享給大家,有需要的朋友可以參考一下
組合器(Composite)模式,屬於設計模式中的結構型模式之一,主要用途就是把多個物件組合成一個樹狀的結構來表示「整體—部分」的關係。
舉例:我們用樹狀圖表示 江蘇省->南京市->秦淮區和建鄴區。
其中江蘇省為一級,南京市屬於江蘇省作為二級,而建鄴區和秦淮區並列屬於南京市屬於三級。
就得到如圖結構:
-->江苏省 1级 -->-->南京市 2级 -->-->-->秦淮区 3级 -->-->-->建邺区 3级
## 而組合器模式的作用就是,客戶端透過一個相同的方法將物件進行組合並且區分出主從級別,提高靈活性和擴展性。
<?php /** 抽象一个总组合器类 * abstract IComposite */ abstract Class IComposite { protected $name; function __construct($name) { $this->name = $name; } abstract function Add(IComposite $place); abstract function Display($level); } /** 组合器类 供客户端调用 * Composite */ Class Composite extends IComposite { private $places = array(); function __construct($name) { parent::__construct($name); } function Add(IComposite $place) { $this->places[] = $place; } /** 显示方法 * Display * $level 级别 默认江苏省为 1级 */ function Display($level = "1") { $pre = ""; for ($i=0; $i < $level; $i++) { $pre.= "-->"; } $pre.=$this->name."<br/>"; echo $pre; foreach ($this->places as $v) { // 往后南京市 级别加1 秦淮区在南京市基础上再加1 $v->display($level+1); } } }
<?php // 组合器模式 index.php header("Content-Type:text/html;charset=utf-8"); require_once "Composite.php"; // Composite.php // 先处理江苏省 $jiangsu = new Composite("江苏省"); // 再处理南京市 $nanjing = new Composite("南京市"); // 最后处理秦淮区和建邺区 $qinhuai = new Composite("秦淮区"); $jianye = new Composite("建邺区"); // 把南京添加到江苏省下 $jiangsu->Add($nanjing); // 把秦淮区和建邺区添加到南京市下 $nanjing->Add($qinhuai); $nanjing->Add($jianye); $jiangsu->Display(); // 显示###相關推薦:#########PHP設計模式之橋接模式############PHP設計模式之適配器模式#### ########PHP設計模式之建造者模式#########################
以上是PHP設計模式之 組合模式的詳細內容。更多資訊請關注PHP中文網其他相關文章!