源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

php设计模式 Composite (组合模式)

  • 时间:2020-06-15 23:34 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:php设计模式 Composite (组合模式)
[u]复制代码[/u] 代码如下:
<?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." ---------<br/>"; 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."<br/>"; } } 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(); } } // 实例一下 // 创建menu $subMenu1 = new Menu("sub menu1"); $subMenu2 = new Menu("sub menu2"); $subMenu3 = new Menu("sub menu3"); $item1 = new Item("163","www.163.com"); $item2 = new Item("sina","www.sina.com"); $subMenu1->add($item1); $subMenu1->add($item2); $item3 = new Item("baidu","www.baidu.com"); $item4 = new Item("google","www.google.com"); $subMenu2->add($item3); $subMenu2->add($item4); $allMenu = new Menu("All Menu"); $allMenu->add($subMenu1); $allMenu->add($subMenu2); $allMenu->add($subMenu3); $objClient = new Client($allMenu); $objClient->displayMenu(); $objClient->setMenu($subMenu2); $objClient->displayMenu();
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部