这篇文章介绍的内容是关于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(); // 显示
相关推荐:
Atas ialah kandungan terperinci PHP设计模式之 组合模式 . Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!