ホームページ バックエンド開発 PHPチュートリアル compose php デザインパターン 複合組み合わせパターン

compose php デザインパターン 複合組み合わせパターン

Jul 29, 2016 am 08:45 AM
compose

复制代码代码如下:


<?php
/**
* 結合モード
*
* オブジェクトをツリー構造に結合して「部分全体」の階層を表すことで、顧客は単一オブジェクトと複合オブジェクトを一貫して使用できるようになります
*/
抽象クラス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();
プライベート $_name = null;
パブリック関数 __construct($name)
{
$this->_name = $name;
}
パブリック関数 add($component)
{
$this->_items[] = $component;
}
パブリック関数 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 項目は MenuComponent を拡張します
{
private $_name = null;
プライベート $_url = null;
パブリック関数 __construct($name,$url)
{
$this->_name = $name;
$this->_url = $url;
}
public function display()
{
echo $this->_name."#".$this->_url."<br/>";
}
}
クラスクライアント
{
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();

上記は、compose php デザイン モードを介して作成された複合結合モードであり、compose 面の内容が含まれており、PHP 教則に関心のある友人の助けになることが望まれます。

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

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

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

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

React と Docker Compose を使用して複雑なフロントエンドおよびバックエンド アプリケーションをデプロイする方法 React と Docker Compose を使用して複雑なフロントエンドおよびバックエンド アプリケーションをデプロイする方法 Sep 26, 2023 am 10:17 AM

React と Docker Compose を使用して複雑なフロントエンドおよびバックエンド アプリケーションをデプロイする方法

Docker Composeを使ってPHP開発環境を簡単に構築する Docker Composeを使ってPHP開発環境を簡単に構築する Oct 12, 2023 am 11:36 AM

Docker Composeを使ってPHP開発環境を簡単に構築する

Docker Compose、Nginx、MariaDB を使用して高可用性 PHP アプリケーション クラスターを構築する Docker Compose、Nginx、MariaDB を使用して高可用性 PHP アプリケーション クラスターを構築する Oct 12, 2023 am 08:23 AM

Docker Compose、Nginx、MariaDB を使用して高可用性 PHP アプリケーション クラスターを構築する

Docker Compose を使用して nginx 負荷分散を実装する方法 Docker Compose を使用して nginx 負荷分散を実装する方法 May 15, 2023 pm 09:37 PM

Docker Compose を使用して nginx 負荷分散を実装する方法

Docker Compose が Redis クラスターをインストールする方法 Docker Compose が Redis クラスターをインストールする方法 May 28, 2023 am 10:07 AM

Docker Compose が Redis クラスターをインストールする方法

Docker の Compose を使用して nginx 負荷分散を実装する方法 Docker の Compose を使用して nginx 負荷分散を実装する方法 May 11, 2023 pm 04:13 PM

Docker の Compose を使用して nginx 負荷分散を実装する方法

Docker Compose、Nginx、MariaDB を使用した PHP アプリケーションの継続的配信 Docker Compose、Nginx、MariaDB を使用した PHP アプリケーションの継続的配信 Oct 12, 2023 pm 12:06 PM

Docker Compose、Nginx、MariaDB を使用した PHP アプリケーションの継続的配信

Docker Compose、Nginx、MariaDB の黄金レシピ: 高可用性 PHP アプリケーション アーキテクチャ Docker Compose、Nginx、MariaDB の黄金レシピ: 高可用性 PHP アプリケーション アーキテクチャ Oct 12, 2023 am 09:25 AM

Docker Compose、Nginx、MariaDB の黄金レシピ: 高可用性 PHP アプリケーション アーキテクチャ

See all articles