一区二区三区在线-一区二区三区亚洲视频-一区二区三区亚洲-一区二区三区午夜-一区二区三区四区在线视频-一区二区三区四区在线免费观看

服務器之家:專注于服務器技術及軟件下載分享
分類導航

PHP教程|ASP.NET教程|Java教程|ASP教程|編程技術|正則表達式|C/C++|IOS|C#|Swift|Android|VB|R語言|JavaScript|易語言|vb.net|

服務器之家 - 編程語言 - PHP教程 - php設計模式 Composite (組合模式)

php設計模式 Composite (組合模式)

2019-12-01 12:41PHP教程網 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." ---------<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(); 

延伸 · 閱讀

精彩推薦
主站蜘蛛池模板: 俄罗斯15一16处交 | 免费一级生活片 | freexxxxxhd张柏芝 | 亚洲羞羞裸色私人影院 | 91手机看片国产永久免费 | 男人的天堂在线观看免费 | 69老司机亚洲精品一区 | 男人晚上适合偷偷看的污污 | 国产精品一区二区国产 | 奇米影视在线视频 | 男人天堂色男人 | 精精国产xxxx视频在线播放器 | yy8090韩国日本三理论免费 | 国产高清久久 | 91免费永久在线地址 | 视频国产精品 | 91短视频版高清在线观看免费 | 亚洲精品福利在线 | 91麻豆精东果冻天美传媒老狼 | 国产高清不卡视频在线播放 | 5g影院天天影院天天爽影院网站 | 问一问免费咨询 | 99热er | 国产欧美日韩免费一区二区 | 日韩激情视频在线观看 | 免费一级欧美大片在线观看 | 亚洲免费闲人蜜桃 | 亚洲国产成人精品无码区99 | 关晓彤一级做a爰片性色毛片 | 成年人在线免费看 | 欧美日韩在线观看精品 | 五月天在线视频观看 | 国产手机在线αⅴ片无码观看 | 爆操女友 | 手机在线免费观看视频 | 日韩亚洲欧美一区二区三区 | 四虎1515h永久| 亚洲成色 | 欧美xbxbxbxb大片 | poronovideos极度变态 | 国产精品久久久久久久久久久威 |