Maison  >  Article  >  développement back-end  >  Qu'est-ce que le mode combinaison ? (exemple)

Qu'est-ce que le mode combinaison ? (exemple)

藏色散人
藏色散人avant
2019-04-16 09:55:464892parcourir

Modèle composite

Modèle composite  : permet aux clients de combiner des objets dans une structure arborescente pour représenter la hiérarchie « ensemble/section » . Les compositions permettent aux clients de travailler avec des objets individuels ainsi qu'avec des combinaisons d'objets de manière cohérente.

Le mode combinaison nous permet de créer une structure d'objets en forme d'arbre, qui contient des combinaisons et des objets individuels. En utilisant les structures de composition, nous pouvons appliquer les mêmes opérations aux compositions et aux objets individuels. En d’autres termes, dans la plupart des cas, nous pouvons ignorer la différence entre les combinaisons d’objets et les objets individuels.

Les composants qui contiennent d'autres composants sont des objets composites ; les composants qui ne contiennent pas d'autres composants sont des objets de nœud feuille.

Afin de maintenir la « transparence », le modèle de composition viole souvent le principe de responsabilité unique. Autrement dit, il doit gérer des objets internes d’une part, et fournir un ensemble d’interfaces d’accès d’autre part.

Lorsque l'interface en mode composite fournit une méthode de suppression des nœuds enfants, il sera plus facile d'implémenter l'opération de suppression s'il y a un pointeur vers le nœud parent dans le composant.

Prenons l'exemple du calcul de l'efficacité au combat d'une armée pour démontrer le mode combinaison

L'armée est composée d'infanterie, d'artillerie et de forces spéciales. la capacité de se battre et d'avoir sa propre efficacité au combat. Nous les combinons en une armée et complétons le calcul de l'efficacité au combat.

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

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer