首页 > Web开发 > 详细

php 设计模式 --组合器模式

时间:2019-12-18 20:48:30      阅读:78      评论:0      收藏:0      [点我收藏+]

PHP 开启错误显示并设置错误报告级别

ini_set(‘error_reporting‘, E_ALL);
ini_set(‘display_errors‘, ‘on‘);
 
目的:分级处理;整体与结构 树结构;
<?php
ini_set(‘error_reporting‘, E_ALL);
ini_set(‘display_errors‘, ‘on‘);
abstract class Company{
    protected $name;
    function __construct($name){
        $this->name=$name;
    }
    abstract function Add(Company $company);
    abstract function Remove(Company $company);
    abstract function Display($depth);
}


class SubCompany extends Company
{
    private $sub_companys = array();
    function __construct($name){
        parent::__construct($name);
    
    }
    public function Add(Company $company){
        //echo 31;die;
        $this->sub_companys[] = $company;
    }
    function Remove(Company $company) {
        $key = array_search($company , $this->sub_companys);
        if ( $key != false) {
            unset($this->sub_companys[$key]);
        }

    }
    function Display($depth) {
    
        $pre = "";
        for($i=0 ; $i<$depth; $i++){
            $pre.="-";
        }
        $pre.=$this->name."<br/>";
        echo $pre;

        foreach ($this->sub_companys as $v ) {
            $v->Display($depth+2);
        }
    }
} 

class MoneyDept extends Company
{

    function __construct($name){
        parent::__construct($name);
    }

    function Add(Company $company){
        echo "叶子节点,不能再添加。。。<br/>" ;
    }
    function Remove(Company $company) {
        echo "叶子节点,不能再删除。。。<br/>";
    }
    function Display($depth) {
        $pre = "";
        for($i=0 ; $i<$depth; $i++){
            $pre.="-";
        }
        $pre.=$this->name."<br/>";
        echo $pre;
    }
    
}


class ItDept extends Company
{

    function __construct($name){
        parent::__construct($name);
    }

    function Add(Company $company){
        echo "叶子节点,不能再添加。。。<br/>";
    }
    function Remove(Company $company) {
        echo "叶子节点,不能再删除。。。<br/>";
    }
    function Display($depth) {
        $pre = "";
        for($i=0 ; $i<$depth; $i++){
            $pre.="-";
        }
        $pre.=$this->name."<br/>";
        echo $pre;
    }
    
}


$root = new SubCompany("北京总公司");
//$a = new MoneyDept("总公司财务部");
$root->Add(new MoneyDept("总公司财务部"));
$root->Add(new ItDept("总公司技术部门"));



$sh = new SubCompany("上海分公司");
$sh->Add(new MoneyDept("上海分公司财务部"));
$sh->Add(new ItDept("上海分公司技术部门"));
$root->Add($sh);

$root->Display(1);

echo "<br>";
$root->Remove($sh);
$root->Display(3);

 

php 设计模式 --组合器模式

原文:https://www.cnblogs.com/songyanan/p/12063321.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!