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!