美文网首页
设计模式(十):组合模式

设计模式(十):组合模式

作者: 何笙 | 来源:发表于2019-05-16 15:23 被阅读0次

组合模式(Composite Pattern)又叫做部分-整体模式,用于将对象组合成树形结构以表示“部分-整体”的层次关系。组合模式使得用户对单个对象和组合对象的使用具有一致性。

常见使用场景:如树形菜单、文件夹菜单、部门组织架构图等。

关键代码:部分-整体场景,树枝内部组合该接口,并且含有内部属性 List,里面放 Component。

示例代码:

文件节点:Filer

class Filer {
    private $file_name;//文件名
    
    public function __construct($file_name){
        $this->file_name = $file_name;
    }
    //文件显示方法
    public function display(){
        print_r($this->file_name);
    }
}

目录节点:Noder

class Noder {
    private $node_name;//目录名
    private $list = array(); //下级目录、文件列表

    public function __construct($node_name){
        $this->node_name = $node_name;
    }
    //新增下级目录
    public function addNoder(Noder $noder){
        array_push($this->list, $noder);
    }
    //新增文件
    public function addFiler(Filer filer){
        array_push($this->list, $filer);
    }
    //显示下级目录及文件
    public function display(){
        print_r($this->node_name);
        foreach($this->list as $item){
            $item.display();
        }
    }
}

测试类:Clienter

$noder = new Noder("home");
$noder->addFilter(new Filer("fileA"));
$noder->addFilter(new Filer("fileB"));
$usr = new Noder("usr");
$noder->addNoder($usr);
$usr->addFiler("fileC");
$noder->display();

相关文章

网友评论

      本文标题:设计模式(十):组合模式

      本文链接:https://www.haomeiwen.com/subject/zhnraqtx.html