Design Patterns: Composite en PHP

Le pattern composite est un design pattern structurelle qui permet de composer des objets dans une structure arborescente et de l’utiliser comme s’il s’agissait d’un seule objet.
 
 


 
Le pattern composite peut rationaliser le travail de toutes structures récursives arborescentes. Le DOM HTML est un exemple d’une telle structure. Par exemple, les éléments input peuvent agir comme des feuilles, les éléments complexes comme les formulaires jouent le rôle de composites.

Vous pouvez utiliser le pattern Composite pour appliquer divers comportements à l’ensemble de l’arborescence HTML de la même manière qu’à ses éléments internes sans coupler votre code à des classes concrètes de l’arborescence DOM. Des exemples de tels comportements peuvent être la récupération des éléments DOM, la validation, etc.
 

Exemple :

Dans l’exemple suivant une instance de classe « form » gère tous ses éléments(input, br, img, etc) comme une seule instance, lorsque get() est appelé, il parcourt ensuite tous ses éléments enfants et appelle get() sur chacun d’entre eux.
 
 

<?php

interface Operation
{
    public function get(): string;
}

class Form implements Operation
{
    private array $elements;

    public function get(): string
    {
        $code = '
'; foreach ($this->elements as $element) { $code .= $element->get(); } $code .= '
'; return $code; } public function addElement(Operation $element) { $this->elements[] = $element; } } class InputElement implements Operation { public function get(): string { return '<input type="text">'; } } class BrElement implements Operation { public function get(): string { return '<br>'; } } ?>

 

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée.