您好,欢迎访问一九零五行业门户网

PHP设计模式之 组合模式

这篇文章介绍的内容是关于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设计模式之 组合模式 的详细内容。
其它类似信息

推荐信息