Modèle de combinaison de modèle de conception PHP

不言
Libérer: 2023-03-24 10:04:02
original
1489 Les gens l'ont consulté

Cet article présente le mode de combinaison du modèle de conception PHP, qui a une certaine valeur de référence. Maintenant, je le partage avec vous. Les amis dans le besoin peuvent s'y référer

Modèle Combosite (Composite) est l'un des modèles structurels des modèles de conception. Son objectif principal est de combiner plusieurs objets dans une structure arborescente pour représenter la relation « partie entière ».
Exemple : Nous utilisons un diagramme en arbre pour représenter la province du Jiangsu->Ville de Nanjing->Le district de Qinhuai et le district de Jianye.
Parmi eux, la province du Jiangsu est le premier niveau, la ville de Nanjing appartient à la province du Jiangsu et est le deuxième niveau, tandis que le district de Jianye et le district de Qinhuai appartiennent à la ville de Nanjing et sont le troisième niveau.
Vous obtiendrez la structure comme indiqué :


-->江苏省          1级
-->-->南京市       2级
-->-->-->秦淮区    3级
-->-->-->建邺区    3级
Copier après la connexion



Le rôle du mode combineur est que le client combine les objets via la même méthode et distingue le niveau maître-esclave, améliorant ainsi la flexibilité et l'évolutivité.

<?php  
         
      
/** 抽象一个总组合器类     
 *  abstract IComposite          
 */   
abstract Class IComposite  
{  
   protected $name;  
   function __construct($name)  
   {  
      $this->name = $name;  
   }  
   abstract function Add(IComposite $place);  
  
   abstract function Display($level);  
}  
  
/** 组合器类 供客户端调用 
 *  Composite          
 */  
Class Composite extends IComposite  
{  
   private $places = array();  
  
   function __construct($name)  
   {   
      parent::__construct($name);  
   }  
  
   function Add(IComposite $place)  
   {  
      $this->places[] = $place;  
   }  
  
/** 显示方法 
 *  Display  
 *  $level 级别 默认江苏省为 1级       
 */  
   function Display($level = "1")  
   {  
      $pre = "";  
  
      for ($i=0; $i < $level; $i++) {   
          $pre.= "-->";  
      }  
      $pre.=$this->name."<br/>";  
      echo $pre;  
  
      foreach ($this->places as $v) {  
          // 往后南京市 级别加1 秦淮区在南京市基础上再加1  
         $v->display($level+1);   
      }  
  
   }  
}
Copier après la connexion
<?php  
  
// 组合器模式  index.php  
header("Content-Type:text/html;charset=utf-8");  
  
require_once "Composite.php"; // Composite.php  
  
// 先处理江苏省  
$jiangsu = new Composite("江苏省");  
  
// 再处理南京市  
$nanjing = new Composite("南京市");  
  
// 最后处理秦淮区和建邺区  
$qinhuai = new Composite("秦淮区");   
$jianye = new Composite("建邺区");  
  
// 把南京添加到江苏省下  
$jiangsu->Add($nanjing);  
  
// 把秦淮区和建邺区添加到南京市下  
$nanjing->Add($qinhuai);  
$nanjing->Add($jianye);  
  
$jiangsu->Display(); // 显示
Copier après la connexion
Recommandations associées :

Mode pont du modèle de conception PHP

Modèle d'adaptateur de modèle de conception PHP

Modèle de générateur de modèles de conception PHP



Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal