这篇文章介绍的内容是关于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(); // 显示相关推荐:
系统介绍 45°C 商城系统,以 Thinkphp5.0 + Uniapp + Layui2.9 + Vue 为技术基石,精心打造出的全新 MINI 商城应用。其功能覆盖全面,无论是 PC 商城、H5 商城,还是公众号商城、微信小程序以及抖音小程序的制作都能完美胜任。采用标准系统结合插件模式开发,用户能够极为便捷地定制专属的个性模块。整个系统,从程序设计到 UI 呈现,都秉持着一贯的小而美理念。程
0
立即学习“PHP免费学习笔记(深入)”;
以上就是PHP设计模式之 组合模式 的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号