php设计模式 Composite (组合模式)
2011-06-26 00:00
1871 查看
<?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();
相关文章推荐
- php设计模式 Composite (组合模式)
- PHP设计模式之组合(Composite)模式
- [php]php设计模式 Composite (组合模式)
- php设计模式 Composite (组合模式)
- [PHP设计模式]Composite(组合)模式范例
- 设计模式与泡mm的关系之Composite组合模式及组合模式的再思考
- 设计模式学习-Composite(组合模式)
- 设计模式之Composite(组合)
- php 3种基本设计模式的组合使用
- 设计模式读书笔记之组合模式(Composite)
- 设计模式之Composite(组合)
- Composite Design Pattern 组合设计模式
- 设计模式(8)——组合 Composite
- java23中设计模式——结构模式——Composite(组合) 3ff8
- 设计模式一日一练:组合模式(Composite)
- [设计模式]Composite(组合)——对象结构型模式
- (Boolan)C++设计模式 <十一> ——组合模式(Composite)、迭代器(Iterator)和责任链(Chain of Resposibility)
- 设计模式之----组合模式(Composite Design Pattern)
- Java设计模式透析之 —— 组合(Composite)
- 设计模式--组合模式Composite(结构性)