PHP设计模式之 组合模式
程序员文章站
2022-03-21 10:36:42
...
这篇文章介绍的内容是关于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单例模式实现(对象只被创建一次)
下一篇: Yii2框架中日志的使用方法分析
推荐阅读
-
php 设计模式之 单例模式_PHP
-
PHP PDO fetch 模式各种参数的输出结果一览,pdofetch_PHP教程
-
php的public、protected、private三种访问控制模式的区别
-
php入门2 单例模式
-
php-mvc模式(1)
-
php模式设计之 适配器模式,php模式设计适配器_PHP教程
-
php设计模式 工厂、单例、注册树模式,php设计模式_PHP教程
-
php设计模式 原型模式,设计模式原型_PHP教程
-
php的几种运行模式CLI、CGI、FastCGI、mod_php,fastcgimod_php
-
PHP杂谈《重构-改善既有代码的设计》之对象之间搬移特性_PHP教程