>백엔드 개발 >PHP 튜토리얼 >PHP 디자인 패턴 작성 복합 조합 패턴

PHP 디자인 패턴 작성 복합 조합 패턴

WBOY
WBOY원래의
2016-07-29 08:45:471300검색

复代码 代码如下:


/**
* 조합 모드
*
* 객체를 트리 구조로 결합하여 "부분-전체" 계층을 표현함으로써 고객이 단일 객체와 복합 객체를 일관되게 사용할 수 있습니다
*/ 
추상 클래스 MenuComponent

공개 함수 추가($comComponent){}
공개 함수 제거($comComponent){}
공개 함수 getName(){}
공개 함수 getUrl(){}
public function display(){}
}
class 메뉴는 MenuComponent를 확장합니다.
{
private $_items = array();
비공개 $_name = null;
공용 함수 __construct($name)
{
$this->_name = $name;
}
공용 함수 추가($comComponent)
{
$this->_items[] = $comComponent;
}
공용 함수 제거($comComponent)
{
$key = array_search($comComponent,$this->_items);
if($key !== false) unset($this->_items[$key]);
}
공용 함수 표시()
{
echo "-- ".$this->_name." ---------
";
foreach($this->_items를 $item으로)
{
$item->display();
}
}
}
class Item 확장 MenuComponent
{
private $_name = null;
비공개 $_url = null;
공용 함수 __construct($name,$url)
{
$this->_name = $name;
$this->_url = $url;
}
공용 함수 표시()
{
echo $this->_name."#".$this->_url."
";
}
}
class 클라이언트
{
private $_menu = null;
공용 함수 __construct($menu)
{
$this->_menu = $menu;
}
공용 함수 setMenu($menu)
{
$this->_menu = $menu;
}
공용 함수 displayMenu()
{
$this->_menu->display();
}
}
// 实例一下
// 创建menu
$subMenu1 = new Menu("sub menu1");
$subMenu2 = new Menu("하위 메뉴2");
$subMenu3 = new Menu("하위 메뉴3");
$item1 = 새 항목("163","www.163.com");
$item2 = 새 항목("sina","www.sina.com");
$subMenu1->add($item1);
$subMenu1->add($item2);
$item3 = 새 항목("baidu","www.baidu.com");
$item4 = 새 항목("google","www.google.com");
$subMenu2->add($item3);
$subMenu2->add($item4);
$allMenu = new Menu("모든 메뉴");
$allMenu->add($subMenu1);
$allMenu->add($subMenu2);
$allMenu->add($subMenu3);
$objClient = 새 클라이언트($allMenu);
$objClient->displayMenu();
$objClient->setMenu($subMenu2);
$objClient->displayMenu();

以上就介绍了compose php设计模式 Composite 组合模式,包括了compose 方face的内容,希望对PHP教程有兴趣的朋友有所帮助.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.