Wzorce projektowe – Mediator

Założenie: Zrozumieć i zaimplementować prosty przykład wzorca projektowego Mediator w PHP, aby zarządzać komunikacją między kilkoma obiektami.

Krok po kroku:

  1. Stworzenie interfejsu Mediator: Definiujemy interfejs, który będzie określał metody komunikacji między obiektami.
  2. 
    interface Mediator {
      public function send(string $message, Colleague $colleague);
    }
    				

    Ten kod definiuje interfejs Mediator z metodą send, która przyjmuje wiadomość i obiekt Colleague (opisany poniżej) jako argumenty.

  3. Stworzenie klasy Colleague: Definiujemy klasę reprezentującą obiekt uczestniczący w komunikacji.
  4. 
    class Colleague {
      private $mediator;
      private $name;
    
      public function __construct(Mediator $mediator, string $name) {
        $this->mediator = $mediator;
        $this->name = $name;
      }
    
      public function send(string $message) {
        $this->mediator->send($message, $this);
      }
    
      public function receive(string $message) {
        echo "{$this->name}: Otrzymałem wiadomość: {$message}\n";
      }
    }
    				

    Klasa Colleague posiada mediatora, imię i metody wysyłania i odbierania wiadomości.

  5. Implementacja konkretnego mediatora: Tworzymy klasę implementującą interfejs Mediator.
  6. 
    class ConcreteMediator implements Mediator {
      private $colleague1;
      private $colleague2;
    
      public function __construct(Colleague $colleague1, Colleague $colleague2) {
        $this->colleague1 = $colleague1;
        $this->colleague2 = $colleague2;
      }
    
      public function send(string $message, Colleague $colleague) {
        if ($colleague === $this->colleague1) {
          $this->colleague2->receive($message);
        } else {
          $this->colleague1->receive($message);
        }
      }
    }
    				

    Klasa ConcreteMediator zarządza komunikacją między dwoma obiektami Colleague.

  7. Użycie mediatora: Tworzymy instancje i uruchamiamy komunikację.
  8. 
    $mediator = new ConcreteMediator(new Colleague($mediator, "Kolega 1"), new Colleague($mediator, "Kolega 2"));
    $mediator->colleague1->send("Cześć!");
    				

    Ten kod tworzy mediatora i dwóch kolegów, a następnie wysyła wiadomość.

Ten przykład pokazuje podstawowe zastosowanie wzorca Mediator. Zachęcamy do dalszego zgłębiania tematu wzorców projektowych w PHP!

Dodaj komentarz 0

Your email address will not be published. Required fields are marked *