Heim >Backend-Entwicklung >PHP-Tutorial >Was ist der Kombinationsmodus? (Beispiel)

Was ist der Kombinationsmodus? (Beispiel)

藏色散人
藏色散人nach vorne
2019-04-16 09:55:464920Durchsuche

Zusammengesetztes Muster

Zusammengesetztes Muster : Ermöglicht Kunden, Objekte in einer Baumstruktur zu kombinieren, um die Hierarchie „Ganzes/Abschnitt“ darzustellen . Kompositionen ermöglichen es Kunden, konsistent mit einzelnen Objekten und Kombinationen von Objekten zu arbeiten.

Der Kombinationsmodus ermöglicht es uns, eine Objektstruktur in Baumform zu erstellen, die Kombinationen und einzelne Objekte enthält. Mithilfe von Kompositionsstrukturen können wir dieselben Operationen auf Kompositionen und einzelne Objekte anwenden. Mit anderen Worten: In den meisten Fällen können wir den Unterschied zwischen Kombinationen von Objekten und einzelnen Objekten ignorieren.

Komponenten, die andere Komponenten enthalten, sind zusammengesetzte Objekte; Komponenten, die keine anderen Komponenten enthalten, sind Blattknotenobjekte.

Um die „Transparenz“ zu wahren, verstößt das Kompositionsmodell häufig gegen das Prinzip der Einzelverantwortung. Mit anderen Worten: Es muss einerseits interne Objekte verwalten und andererseits eine Reihe von Zugriffsschnittstellen bereitstellen.

Wenn die Schnittstelle im zusammengesetzten Modus eine Methode zum Löschen untergeordneter Knoten bereitstellt, ist es einfacher, den Löschvorgang zu implementieren, wenn in der Komponente ein Zeiger auf den übergeordneten Knoten vorhanden ist.

Nehmen Sie die Kampfeffektivitätsberechnung einer Armee als Beispiel, um den Kombinationsmodus zu demonstrieren

Die Armee besteht aus Infanterie, Artillerie und Spezialeinheiten. Sie alle haben die Fähigkeit zu kämpfen und ihre eigene Kampfeffektivität zu haben. Wir vereinen sie zu einer Armee und führen die Berechnung der Kampfeffektivität durch.

<?php
//抽象士兵类
interface soldier{
public function fire();
}
//步兵 攻击力5
class bubing implements soldier{
public function fire(){
return 5;
}
}
//炮兵 攻击力8
class paobing implements soldier{
public function fire(){
return 8;
}
}
//特种兵 攻击力 12
class tezhongbing implements soldier{
public function fire(){
return 12;
}
}
//军队类实现兵种的组合
class arm{
//存储作战兵种的数组 
private $soldier = array();
//添加作战兵种
public function add($soldierType){
//获取对应的兵种对象
$soldier  = new $soldierType();
//保存进数组利用数组的键记录兵种 便于删除
$this->soldier[$soldierType] = $soldier;
}
//删除兵种
public function delete($soldierType){
if(isset($this->soldier[$soldierType])){
unset($this->soldier[$soldierType]);
}
}
//计算并输出战斗能力
public function show(){
$zhantouli = 0;
foreach($this->soldier as $v){
$zhantouli += $v->fire();
}
echo "军队的战斗力: ".$zhantouli;
}
}
$arm = new arm();
$arm->add(&#39;bubing&#39;);
$arm->add(&#39;paobing&#39;);
$arm->show();
$arm->delete(&#39;paobing&#39;);
$arm->show();

Das obige ist der detaillierte Inhalt vonWas ist der Kombinationsmodus? (Beispiel). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:hcoder.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen