Heim  >  Artikel  >  Backend-Entwicklung  >  Kombinationsmodus und Fallfreigabe von PHP-Entwurfsmustern

Kombinationsmodus und Fallfreigabe von PHP-Entwurfsmustern

小云云
小云云Original
2018-03-12 14:56:261348Durchsuche

Das Kompositionsmuster ermöglicht es Kunden, auf konsistente Weise sowohl mit einzelnen Objekten als auch mit zusammengesetzten Objekten zu arbeiten. Der Kombinationsmodus ermöglicht es dem Client, rekursive Aktionen so einfach auszuführen, wie die Konfigurationsdatei zu ändern, sodass der Client nicht logisch denken muss. Gruppieren Sie Objekte in einer Baumstruktur, um eine „Teil-Ganze“-Hierarchie darzustellen.

PHP-Fall:

Navigationsverzeichnisse hinzufügen und löschen:

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();

Verwandte Empfehlungen:

Verwandte Empfehlungen:

Teilen gängiger PHP-Entwurfsmuster

Detaillierte Erläuterung des Service Locator-Musterbeispiels eines PHP-Entwurfsmusters

Detaillierte Erläuterung des Builder-Musters von PHP-Entwurfsmuster

Detaillierte Erklärung des Beobachtermusters von PHP-Entwurfsmustern

PHP-Tutorial: Vorwort zu PHP-Entwurfsmustern

Das obige ist der detaillierte Inhalt vonKombinationsmodus und Fallfreigabe von PHP-Entwurfsmustern. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn