• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    PHP设计模式之组合模式定义与应用示例

    本文实例讲述了PHP设计模式之组合模式定义与应用。分享给大家供大家参考,具体如下:

    ?php
    /**
     * 组合模式
     *
     * 将对象组合成树形结构以表示"部分-整体"的层次结构,使得客户对单个对象和复合对象的使用具有一致性
     */
    abstract class MenuComponent
    {
      public function add($component)
      {
      }
      public function remove($component)
      {
      }
      public function getName()
      {
      }
      public function getUrl()
      {
      }
      public function display()
      {
      }
    }
    class Menu extends MenuComponent
    {
      private $_items = array();
      private $_name = null;
      public function __construct($name)
      {
        $this->_name = $name;
      }
      public function add($component)
      {
        $this->_items[] = $component;
      }
      public function remove($component)
      {
        $key = array_search($component, $this->_items);
        if ($key !== false) unset($this->_items[$key]);
      }
      public function display()
      {
        echo "-- " . $this->_name . " --------- \r\n ";
        foreach ($this->_items as $item) {
          $item->display();
        }
      }
    }
    class Item extends MenuComponent
    {
      private $_name = null;
      private $_url = null;
      public function __construct($name, $url)
      {
        $this->_name = $name;
        $this->_url = $url;
      }
      public function display()
      {
        echo $this->_name . "#" . $this->_url . " \r\n ";
      }
    }
    class Client
    {
      private $_menu = null;
      public function __construct($menu)
      {
        $this->_menu = $menu;
      }
      public function setMenu($menu)
      {
        $this->_menu = $menu;
      }
      public function displayMenu()
      {
        $this->_menu->display();
      }
    }
    // 实例一下
    // 人
    $item3 = new Item("baidu", "www.baidu.com");
    $item4 = new Item("google", "www.google.com");
    $item1 = new Item("163", "www.163.com");
    $item2 = new Item("sina", "www.sina.com");
    // 班级
    $subMenu1 = new Menu("sub menu1");
    $subMenu1->add($item1);
    $subMenu1->add($item2);
    $subMenu2 = new Menu("sub menu2");
    $subMenu2->add($item3);
    $subMenu2->add($item4);
    $subMenu3 = new Menu("sub menu3");
    $subMenu3->add($item3);
    $subMenu3->add($item4);
    // 所有班级
    $allMenu = new Menu("All Menu");
    $allMenu->add($subMenu1);
    $allMenu->add($subMenu2);
    $allMenu->add($subMenu3);
    // 打印所有班级
    $objClient = new Client($allMenu);
    $objClient->displayMenu();
    // 打印第2 班级
    $objClient->setMenu($subMenu2);
    $objClient->displayMenu();
    ?>
    
    

    运行结果:

    -- All Menu ---------
     -- sub menu1 ---------
     163#www.163.com 
     sina#www.sina.com
     -- sub menu2 ---------
     baidu#www.baidu.com
     google#www.google.com
     -- sub menu3 ---------
     baidu#www.baidu.com
     google#www.google.com
     -- sub menu2 ---------
     baidu#www.baidu.com
     google#www.google.com

    更多关于PHP相关内容感兴趣的读者可查看本站专题:《php面向对象程序设计入门教程》、《PHP数组(Array)操作技巧大全》、《PHP基本语法入门教程》、《PHP运算与运算符用法总结》、《php字符串(string)用法总结》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

    希望本文所述对大家PHP程序设计有所帮助。

    您可能感兴趣的文章:
    • php设计模式 Composite (组合模式)
    • PHP面向对象程序设计组合模式与装饰模式详解
    • 浅谈PHP面向对象之访问者模式+组合模式
    • php设计模式之组合模式实例详解【星际争霸游戏案例】
    • PHP设计模式(六)桥连模式Bridge实例详解【结构型】
    • PHP设计模式(五)适配器模式Adapter实例详解【结构型】
    • PHP设计模式(四)原型模式Prototype实例详解【创建型】
    • PHP设计模式(三)建造者模式Builder实例详解【创建型】
    • PHP设计模式(一)工厂模式Factory实例详解【创建型】
    • PHP设计模式概论【概念、分类、原则等】
    • PHP设计模式(七)组合模式Composite实例详解【结构型】
    上一篇:php实现的简单多进程服务器类完整示例
    下一篇:PHP实现简单的协程任务调度demo示例
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

    PHP设计模式之组合模式定义与应用示例 PHP,设计模式,之,组合,模式,