Home Backend Development PHP Tutorial compose php design pattern Composite combination pattern

compose php design pattern Composite combination pattern

Jul 29, 2016 am 08:45 AM
compose

复制代码 代码如下:


/**
* Combination mode
*
* Combine objects into a tree structure to represent the "part-whole" hierarchy, allowing customers to use single objects and composite objects consistently
*/ 
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." ---------
";
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."
";
}
}
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();

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

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

How to deploy complex front-end and back-end applications using React and Docker Compose How to deploy complex front-end and back-end applications using React and Docker Compose Sep 26, 2023 am 10:17 AM

Overview of how to deploy complex front-end and back-end applications using React and Docker Compose In modern software development, using containerization technology to deploy applications has become a mainstream and recommended practice. Among them, Docker is a popular containerized deployment tool, and React is a powerful JavaScript library used to build user interfaces. This article will introduce how to use React and DockerCompose to deploy complex front-end and back-end applications. 1. Preparation before starting

Use Docker Compose to easily build a PHP development environment Use Docker Compose to easily build a PHP development environment Oct 12, 2023 am 11:36 AM

Use DockerCompose to easily build a PHP development environment. With the development of the times, the development environment is becoming more and more rapid and efficient. As a container orchestration tool, DockerCompose allows us to easily configure and manage multiple Docker containers to quickly build a PHP development environment. This article will introduce how to use DockerCompose to build a PHP development environment and provide specific code examples. Preparation First, we need to install Docker and Doc

How to use Docker's Compose to implement nginx load balancing How to use Docker's Compose to implement nginx load balancing May 11, 2023 pm 04:13 PM

Use docker network management and container ip settings as basic knowledge to implement nginx load balancing. View all docker networks dockernetworkls/*networkidnamedriverscopeb832b168ca9abridgebridgelocal373be82d3a6acomposetest_defaultbridgelocala360425082c4hosthostlocal154f600f0e90nonenulllocal*///composetest_default is the previous article when introducing compose, do

Build a highly available PHP application cluster using Docker Compose, Nginx and MariaDB Build a highly available PHP application cluster using Docker Compose, Nginx and MariaDB Oct 12, 2023 am 08:23 AM

Build a highly available PHP application cluster using DockerCompose, Nginx and MariaDB Introduction: With the popularity of the Internet, the development and deployment of web applications have become more complex. In order to improve the availability and scalability of web applications, many developers have begun to use containerization technology to build high-availability application clusters. This article will introduce how to use DockerCompose, Nginx and MariaDB to build a highly available PHP application

How to use Docker Compose to implement nginx load balancing How to use Docker Compose to implement nginx load balancing May 15, 2023 pm 09:37 PM

Use docker network management and container ip settings as basic knowledge to implement nginx load balancing. View all docker networks dockernetworkls/*networkidnamedriverscopeb832b168ca9abridgebridgelocal373be82d3a6acomposetest_defaultbridgelocala360425082c4hosthostlocal154f600f0e90nonenulllocal*///composetest_default is the previous article when introducing compose, do

How docker compose installs redis cluster How docker compose installs redis cluster May 28, 2023 am 10:07 AM

1. Redis configuration information template file name: redis-cluster.tmpl#redis port port${PORT}#redis access password requirepass123456#redis access Master node password masterauth123456#Close protected mode protected-modeno#Enable cluster cluster-enabledyes#Cluster node Configure cluster-config-filenodes.conf#timeout cluster-node-timeout5000#cluster node IPhost mode is the host IP#cluste

Continuous delivery of PHP applications with Docker Compose, Nginx and MariaDB Continuous delivery of PHP applications with Docker Compose, Nginx and MariaDB Oct 12, 2023 pm 12:06 PM

Overview of continuous delivery of PHP applications through DockerCompose, Nginx and MariaDB: With the rapid development of cloud computing and containerization technology, more and more applications are beginning to adopt containerization to achieve rapid delivery and deployment. This article will introduce how to use DockerCompose, Nginx and MariaDB to build a simple PHP application and implement the continuous delivery process. At the same time, we will give specific code examples to help readers better understand

How to publish springboot project using docker-compose image How to publish springboot project using docker-compose image May 11, 2023 am 10:13 AM

Introduction The Docker-Compose project is Docker's official open source project, responsible for realizing the rapid orchestration of Docker container clusters. Compose allows users to define a set of associated application containers as a project through a separate docker-compose.yml template file (YAML format). The Docker-Compose project is written in Python and calls the API provided by the Docker service to manage containers. Therefore, as long as the platform you are operating on supports DockerAPI, you can use Compose for orchestration management. Docker-Compose divides the managed containers into

See all articles