• 设计模式之组合模式(PHP实现)


    
    
    github地址:https://github.com/ZQCard/design_pattern
    /**

    组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。

    
    

    这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。

    
     * 组合模式(Composite Pattern),又叫部分整体模式,是用于把一组相似的对象当作一个单一的对象。
     * 组合模式依据树形结构来组合对象,用来表示部分以及整体层次。这种类型的设计模式属于结构型模式,它创建了对象组的树形结构。
     * 这种模式创建了一个包含自己对象组的类。该类提供了修改相同对象组的方式。
     * 我们通过下面的实例来演示组合模式的用法。实例演示了一个组织中员工的层次结构。
     */

    (1)Employee.class.php

    <?php
    
    namespace Composite;
    
    class Employee
    {
        private $name;
        private $dept;
        private $salary;
        private $subordinates = [];
    
        public function __construct($name, $dept, $salary)
        {
            $this->name = $name;
            $this->dept = $dept;
            $this->salary = $salary;
        }
    
        public function add(Employee $employee)
        {
            $this->subordinates[] = $employee;
        }
    
        public function remove(Employee $employee)
        {
                    
        }
    
        public function getSubordinates()
        {
            return $this->subordinates;
        }
    }

    (2)composite.php

    <?php
    spl_autoload_register(function ($className){
        $className = str_replace('\','/',$className);
        include $className.".class.php";
    });
    
    use CompositeEmployee;
    
    $CEO = new Employee("John","CEO", 30000);
    
    $headSales = new Employee("Robert","Head Sales", 20000);
    
    $headMarketing = new Employee("Michel","Head Marketing", 20000);
    
    $clerk1 = new Employee("Laura","Marketing", 10000);
    $clerk2 = new Employee("Bob","Marketing", 10000);
    
    $salesExecutive1 = new Employee("Richard","Sales", 10000);
    $salesExecutive2 = new Employee("Rob","Sales", 10000);
    
    $CEO->add($headSales);
    $CEO->add($headMarketing);
    
    $headSales->add($salesExecutive1);
    $headSales->add($salesExecutive2);
    
    $headMarketing->add($clerk1);
    $headMarketing->add($clerk2);
    
    $subordinates = $CEO->getSubordinates();
    echo '<pre/>';
    var_dump($subordinates);die;
  • 相关阅读:
    hcharts实现堆叠柱形图
    程序员常用的六大技术博客类
    程序员常用的六大技术博客类
    程序员常用的六大技术博客类
    程序员常用的六大技术博客类
    前端几个常用简单的开发手册拿走不谢
    web开发快速提高工作效率的一些资源
    web开发快速提高工作效率的一些资源
    基础知识(5)- 继承
    51 NOD 1384 全排列(STL 搜索)
  • 原文地址:https://www.cnblogs.com/zhouqi666/p/9141182.html
Copyright © 2020-2023  润新知