Heim Backend-Entwicklung PHP-Tutorial Wie funktioniert das Beobachtermuster in PHP?

Wie funktioniert das Beobachtermuster in PHP?

Jun 03, 2024 pm 02:09 PM
php 观察者模式

Das Observer-Muster in PHP ist ein Entwurfsmuster, das es Beobachtern ermöglicht, Zustandsänderungen in einem Thema zu abonnieren und darauf zu reagieren. Wenn sich der Themenstatus ändert, benachrichtigt es Beobachter, die sich entsprechend aktualisieren können: Die Themenklasse verwaltet eine Liste von Beobachtern und stellt Methoden zum Anhängen und Entfernen von Beobachtern bereit. Die Topic-Klasse stellt Methoden zum Abrufen und Festlegen des Status bereit und löst Beobachterbenachrichtigungen aus, wenn sich der Status ändert. Die Beobachterklasse definiert eine Aktualisierungsmethode, die aufgerufen wird, wenn sich der Subjektstatus ändert. Konkrete Beobachterklassen implementieren Aktualisierungsmethoden, um ihre eigene Logik zu aktualisieren. In der Praxis abonnieren Beobachter Themen und wenn sich der Themenstatus ändert, wird der Beobachter benachrichtigt und aktualisiert sich selbst. So funktioniert das Observer Pattern in PHP dazu. Wenn sich der Status des Themas ändert, werden alle Beobachter benachrichtigt, und Beobachter können sich entsprechend aktualisieren.

Wie funktioniert das Beobachtermuster in PHP?Codestruktur

In PHP können wir die folgende Klassenstruktur verwenden, um das Beobachtermuster zu implementieren:

Themenklasse:

class Subject
{
    private $observers = [];
    private $state;

    public function attach(Observer $observer)
    {
        $this->observers[] = $observer;
    }

    public function detach(Observer $observer)
    {
        $index = array_search($observer, $this->observers);
        if ($index !== false) {
            unset($this->observers[$index]);
        }
    }

    public function getState()
    {
        return $this->state;
    }

    public function setState($state)
    {
        $this->state = $state;
        $this->notifyObservers();
    }

    private function notifyObservers()
    {
        foreach ($this->observers as $observer) {
            $observer->update($this);
        }
    }
}
Nach dem Login kopieren

Beobachterklasse:

interface Observer
{
    public function update(Subject $subject);
}
Nach dem Login kopieren
Konkrete Beobachterklasse:

class ConcreteObserver1 implements Observer
{
    public function update(Subject $subject)
    {
        // 更新自己的逻辑
    }
}

class ConcreteObserver2 implements Observer
{
    public function update(Subject $subject)
    {
        // 更新自己的逻辑
    }
}
Nach dem Login kopieren

Praktischer Fall

Wir können das folgende Codebeispiel verwenden, um die Anwendung des Observer-Musters in der Praxis zu veranschaulichen:

$subject = new Subject();

$observer1 = new ConcreteObserver1();
$observer2 = new ConcreteObserver2();

$subject->attach($observer1);
$subject->attach($observer2);

$subject->setState('New state'); // 触发更新

// 观察者收到更新并相应更新自己
Nach dem Login kopieren
Wenn der Status eines Themas aktualisiert wird, werden alle Beobachter, die es abonniert haben, benachrichtigt und aktualisieren sich entsprechend.

Das obige ist der detaillierte Inhalt vonWie funktioniert das Beobachtermuster in PHP?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

CakePHP Datum und Uhrzeit CakePHP Datum und Uhrzeit Sep 10, 2024 pm 05:27 PM

CakePHP Datum und Uhrzeit

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 Installations- und Upgrade-Anleitung für Ubuntu und Debian

CakePHP-Datei hochladen CakePHP-Datei hochladen Sep 10, 2024 pm 05:27 PM

CakePHP-Datei hochladen

CakePHP-Routing CakePHP-Routing Sep 10, 2024 pm 05:25 PM

CakePHP-Routing

Besprechen Sie CakePHP Besprechen Sie CakePHP Sep 10, 2024 pm 05:28 PM

Besprechen Sie CakePHP

CakePHP-Projektkonfiguration CakePHP-Projektkonfiguration Sep 10, 2024 pm 05:25 PM

CakePHP-Projektkonfiguration

CakePHP-Kurzanleitung CakePHP-Kurzanleitung Sep 10, 2024 pm 05:27 PM

CakePHP-Kurzanleitung

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein Dec 20, 2024 am 11:31 AM

So richten Sie Visual Studio-Code (VS-Code) für die PHP-Entwicklung ein

See all articles