検索
ホームページphp教程php手册PHP デザインパターン Composite (結合モード)

PHP デザインパターン Composite (結合モード)

Jun 13, 2016 pm 12:08 PM
phpコード合成コピー物体意思モデルグループ組み合わせ構造デザインパターン

复制代 代码如下:


/**
* 結合モード
*
* オブジェクトをツリー構造に結合して「部分全体」の階層を表現し、顧客が単一オブジェクトと複合オブジェクトを一貫して使用できるようにします
*/
抽象クラス MenuComponent
{
パブリック関数 add($component){}
パブリック関数 Remove($component){}
パブリック関数 getName(){}
パブリック関数 getUrl(){}
public function display(){}
}
class Menu extends MenuComponent
{
private $_items = array();
プライベート $_name = null;
パブリック関数 __construct($name)
{
$this->_name = $name;
}
public function add($component)
{
$this->_items[] = $component;
}
public function delete($component)
{
$key = array_search($component,$this->_items);
if($key !== false) unset($this->_items[$key]);
}
public function display()
{
echo "-- ".$this->_name." ---------
";
foreach($this->_items as $item)
{
$item->display();
}
}
}
classItem extends MenuComponent
{
private $_name = null;
プライベート $_url = null;
パブリック関数 __construct($name,$url)
{
$this->_name = $name;
$this->_url = $url;
}
public function display()
{
echo $this->_name."#".$this->_url."
";
}
}
クラス クライアント
{
private $_menu = null;
パブリック関数 __construct($menu)
{
$this->_menu = $menu;
}
パブリック関数 setMenu($menu)
{
$this->_menu = $menu;
}
パブリック関数 displayMenu()
{
$this->_menu->display();
}
}
// 实例一下
// 创建menu
$subMenu1 = new Menu("sub menu1");
$subMenu2 = 新しいメニュー("サブメニュー2");
$subMenu3 = 新しいメニュー("サブメニュー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();

声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SecLists

SecLists

SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

PhpStorm Mac バージョン

PhpStorm Mac バージョン

最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール

AtomエディタMac版ダウンロード

AtomエディタMac版ダウンロード

最も人気のあるオープンソースエディター

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

強力な PHP 統合開発環境