php组合模式
admin
2023-06-26 06:42:40
0

组合模式应用于递归结构的优化或分层数据结构的管理:

abstract class Compary

{

protected $name;

/* public function __construct($name)

{

$this->name=$name;

}  */

abstract public  function Add(Compary $compary);

abstract public  function Move(Compary $compary);

abstract public  function Display($level=0);

}


class SubCompary extends Compary

{

private $subcompary=array();

//protected $name;

public function __construct($name)

{

//parent::$name=$name;

$this->name=$name;

}

public function Add(Compary $compary)

{

if(!$compary)

{

return false;

}

$key=array_search($compary,$this->subcompary);

if($key===false)

{

$this->subcompary[]=$compary;

}

return true;

}

public function Move(Compary $compary)

{

if(!$compary)

{

return false;

}

$key=array_search($compary,$this->subcompary);

if($key!==false)

{

unset($this->subcompary[$key]);

}

return true;

}

public function Display($level=0)

{

//输出本节点的名称

if($this->name)

{

$pre='';

for($i=0;$i<$level;$i++)

{

$pre.='-';

}

echo $pre.$this->name.'
';

}

//按层次输出每个分层的节点的名称

if(is_array($this->subcompary))

{

foreach($this->subcompary as $key => $value )

{

//递归输出每层的节点名称

//递归输出每层的节点名称

$value->Display($level+2);

}

}

else

{

}

}

}

class Department extends Compary

{

private $department=array();

//protected $name;

public function __construct($name)

{

//parent::$name=$name;

$this->name=$name;

}

public function Add(Compary $compary)

{

/* if(!$compary)

{

return false;

}

$key=array_search($compary,$this->dapartment);

if($key===false)

{

$this->dapartment[]=$compaty;

return true;

}

else

{

return false;

} */

echo '叶子节点不能增加节点!';

}

public function Move(Compary $compary)

{

/* if(!$compary)

{

return false;

}

$key=array_search($compary,$this->department);

if($key!==false)

{

unset($this->department[$key]);

return true;

}

else

{

return false;

} */

echo '叶子节点不能删除节点!';

}

public function Display($level=0)

{

if(!$this->name)

{

return false;

}

$pre='';

for($i=0;$i<$level;$i++)

{

$pre.='-';

}

echo $pre.$this->name.'
';

/* if(is_array($this->department))

{

foreach($this->department as $key => $value )

{

$value->Display($level+2);

}

}

else

{

return false;

} */

}

}

header('content-type:text/html;charset=utf-8');

$subcompary=new SubCompary('北京公司');



$subcompary->Add(new Department('总公司财务部'));

$subcompary->Add(new Department('总公司技术部'));


$shanghai=new SubCompary('上海分公司');

$shanghai->Add(new Department('上海分公司技术部'));

$shanghai->Add(new Department('上海分公司财务部'));


$subcompary->Add($shanghai);


$subcompary->Display(2);


?>


相关内容

热门资讯

要不要“卸磨杀驴”?印尼陷入两... 【文/观察者网专栏作者 罗仪馥】据报道,印尼中国商会总会近日向普拉博沃总统发出一封英文信函,直指该国...
新加坡贸易关系部长:新加坡正承... 中东局势持续紧张,正在通过能源、航运和供应链等渠道影响全球经济。对于高度依赖贸易、能源进口和国际物流...
原创 国... 当传统山水风光遇上前沿国产科技,国内知名山岳景区正在悄然完成一场体验变革。以黄山接入国产大模型、泰山...
2026深圳厂区人员定位技术升... 深圳厂区人员定位系统是依托无线传感与射频识别技术,对工业厂区、隧道作业等封闭或半封闭场所内的人员位置...
驾驶模拟战机、玩转编程机器人,... 极目新闻记者 狄鑫 通讯员 蔡晨曦 邢彦超 当六一遇上科技,当童心碰撞创新,一场别开生面的科技游园盛...
双英集团杨英:拟募资加码新能源... 作为深耕汽车座椅和内外饰领域二十余年的高新技术企业,广西双英集团股份有限公司(以下简称“双英集团”)...
这场大赛,解锁产才融合新范式 当机器人算力奔腾,当科创浪潮席卷齐鲁,一场属于智能产业的青春对决,正在泉城济南火热上演。 5月26日...
关志鸥任湖北省委书记 新华社北京5月30日电 日前,中共中央决定:关志鸥同志任湖北省委委员、常委、书记;王忠林同志不再担任...
台专家:民进党整合派系应战,征... 针对绿营2026“九合一选举”布局,台湾艺术大学广电系教授赖祥蔚表示,从北高市长参选人、县市党部主委...
电视机一直闪屏怎么办 1、如果是信号不稳定的情况,是没有什么好的处理办法的只能等一段时间等信号稳定下来就可以了。2、关闭电...