Maison  >  Article  >  développement back-end  >  Mode combinaison et partage de cas des modèles de conception PHP

Mode combinaison et partage de cas des modèles de conception PHP

小云云
小云云original
2018-03-12 14:56:261391parcourir

Le modèle de composition permet aux clients de travailler avec des objets individuels ainsi qu'avec des objets composés de manière cohérente. Le mode combinaison permet au client d'effectuer des actions récursives aussi simplement que de modifier le fichier de configuration, éliminant ainsi le besoin pour le client de penser logiquement. Regroupez les objets dans une structure arborescente pour représenter une hiérarchie « partie-tout ».

Cas PHP :

Ajout et suppression de répertoires de navigation :

header("Content-type:text/html; charset=utf-8");
abstract class Component {
abstract function addNode(Component $obj);
abstract function removeNode(Component $obj);
abstract function show($str);
}
class Branch extends Component {
public $name='';
public $childNode = array();
public function __construct($name)
{
$this->name = $name;
}
public function addNode(Component $obj) {
// $this->childNode[] = $obj;
array_push($this->childNode,$obj);
}
public function removeNode(Component $obj) {
$key = array_search($obj, $this->childNode);
unset($this->childNode[$key]);
}
public function show($str="") {
echo $this->name."<br>";
$str.=" |- ";
foreach ($this->childNode as $val) {
echo $str;
$val->show($str);
}
}
}
class Leaf extends Component {
public $name;
public function __construct($name) {
$this->name = $name;
}
 function addNode(Component $obj) {
 return false;
 }
 function removeNode(Component $obj) {
 return false;
 }
 function show($str="") {
 echo $this->name."<br>";
 }
}
$branch1 = new Branch("家电类");
$leaf11 = new Leaf("电饭煲");
$leaf12 = new Leaf("电冰箱");
$leaf13 = new Leaf("洗衣机");
$branch1->addNode($leaf11);
$branch1->addNode($leaf12);
$branch1->addNode($leaf13);
$branch2 = new Branch("电脑类");
$branch21 = new Branch("台式机");
$branch22 = new Branch("笔记本");
$leaf221 = new Leaf("华硕");
$leaf222 = new Leaf("联想");
$leaf223 = new Leaf("华为");
$leaf224 = new Leaf("华夏");
$branch22->addNode($leaf221);
$branch22->addNode($leaf222);
$branch22->addNode($leaf223);
$branch22->addNode($leaf224);
$branch2->addNode($branch21);
$branch2->addNode($branch22);
$branch1->addNode($branch2);
$branch1->show();

Recommandations associées :

Recommandations associées :

Partage des modèles de conception PHP courants

Explication détaillée de l'exemple de modèle de localisateur de service du modèle de conception PHP

Explication détaillée du modèle de générateur de Modèle de conception PHP

Explication détaillée du modèle d'observateur des modèles de conception php

Tutoriel php : Préface aux 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!

Déclaration:
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