Le mode de combinaison est un mode de conception structurelle, principalement utilisé pour combiner plusieurs objets dans une structure d'arbre, exprimant la relation hiérarchique de "partielle-totale". Il permet aux clients de gérer des objets uniques et combinés de la même manière, simplifiant considérablement la structure du code. Cet article prendra en détail Starcraft comme exemple pour afficher l'application du mode combinaison.
Dans Starcraft, nos personnages communs incluent l'armée, le soldat et le tank. Le comportement de ces rôles est défini par le code PHP ci-dessous.
abstract class Unit
{
abstract public function attack();
}
class Soldier extends Unit
{
public function attack()
{
echo "Les soldats attaquent!";
}
}
class Tank extends Unit
{
public function attack()
{
echo "Attaque des réservoirs!";
}
}
class Army extends Unit
{
private $units = [];
public function addUnit(Unit $unit)
{
$this->units[] = $unit;
}
public function attack()
{
foreach ($this->units as $unit) {
$unit->attack();
echo "";
}
}
}
L'armée (armée) est un objet combiné, les soldats et les chars sont des objets de feuilles. L'armée peut contenir plusieurs soldats et chars et peut émettre des commandes d'attaque de manière unifiée.
$army = new Army();
$army->addUnit(new Soldier());
$army->addUnit(new Soldier());
$army->addUnit(new Tank());
En appelant la méthode d'attaque de l'armée, vous pouvez ordonner à tous les membres d'attaquer à la fois:
$army->attack();
Les résultats de l'exécution seront à leur tour de sortie:
Les soldats attaquent!
Les soldats attaquent!
Attaque des réservoirs!
De cette façon, le mode combinaison permet de gérer des structures d'objets complexes de manière unifiée, améliorant considérablement la flexibilité et la maintenabilité du code.
Le mode de combinaison simplifie le traitement des objets uniques et des objets combinés en construisant une structure d'objets en forme d'arbre. Dans l'exemple du jeu Starcraft, nous avons réussi à mettre en œuvre la gestion unifiée de l'armée et de ses membres. Le mode de combinaison rend non seulement le code plus clair, mais offre également une bonne évolutivité pour la conception du système complexe.