Tutorials  /  JavaScript

JavaScript: Das Observer-Design-Pattern

Ccentron Redaktion · Oktober 2023 ·3 Min. Lesezeit ·JavaScript, Tutorial

Abhängige Komponenten können mit Hilfe des Observer-Design-Pattern in JavaScript über Änderungen in einem Objekt informiert werden. Wir zeigen Ihnen zwei mögliche Ansätze.

Das Observer-Design-Pattern ist ein wichtiger Ansatz in der Softwareentwicklung, um Änderungen in einem Teil der Anwendung an andere Teile zu kommunizieren. In AngularJS beispielsweise kann das $scope-Objekt Änderungen auslösen und so andere Komponenten benachrichtigen. Dieses Muster ermöglicht es, abhängige Objekte über Änderungen zu informieren. Ein weiteres Beispiel ist die Model-View-Controller (MVC)-Architektur, bei der die Ansicht (View) aktualisiert wird, wenn sich das Modell (Model) ändert. Ein großer Vorteil dieses Musters besteht darin, die Ansicht von den Modellen zu entkoppeln und die Abhängigkeiten zu verringern.

Die Schlüsselkomponenten des Observer-Design-Pattern

Im Observer-Design-Pattern gibt es drei Schlüsselkomponenten: Das beobachtete Objekt (subject), der Beobachter (observer) und konkrete Beobachterobjekte. Das beobachtete Objekt enthält Verweise auf die konkreten Beobachter, um sie über Änderungen zu benachrichtigen. Das Beobachterobjekt ist eine abstrakte Klasse, die es den konkreten Beobachtern ermöglicht, die Benachrichtigungsmethode (notify) zu implementieren.

VM

Passende Infrastruktur bei centron

Node-Anwendungen wollen deployt werden: ccloud³ VMs mit vollem Root-Zugriff ab 3,12 € im Monat – oder gleich als Managed Server, wenn der Betrieb nicht bei Ihnen liegen soll. Cloud Server mieten →

Beispiel in AngularJS

In AngularJS kann das Observer-Design-Pattern durch die Verwaltung von Ereignissen veranschaulicht werden. Zum Beispiel:

Code
// Controller 1
$scope.$on('nameChanged', function(event, args) {
    $scope.name = args.name;
});

// ...

// Controller 2
$scope.userNameChanged = function(name) {
    $scope.$emit('nameChanged', {name: name});
};

Hier werden Änderungen im Namen über das $emit-Event ausgelöst und von anderen Controllern abgefangen.

Eigenes Implementieren von Subjects und Observers

In JavaScript können wir unsere eigenen Subjects und Observers erstellen. Hier ist eine einfache Implementierung:

JavaScript
var Subject = function() {
    this.observers = [];

    return {
        subscribeObserver: function(observer) {
            this.observers.push(observer);
        },
        // Weitere Methoden: unsubscribeObserver, notifyObserver, notifyAllObservers
    };
};

var Observer = function() {
    return {
        notify: function(index) {
            console.log("Observer " + index + " is notified!");
        }
    };
}

Publish/Subscribe als Alternative

Das Publish/Subscribe-Muster ist eine alternative Methode, bei der zwischen Objekten, die Benachrichtigungen erhalten möchten (Abonnenten), und dem Objekt, das das Ereignis auslöst (Publisher), ein Thema/Ereigniskanal besteht. Dieses System ermöglicht es, anwendungsspezifische Ereignisse zu definieren, die benutzerdefinierte Argumente übermitteln können. Im Gegensatz zum Observer-Muster implementiert jeder Abonnent beim Publish/Subscribe-Muster einen geeigneten Ereignishandler, um sich für und den Empfang von Themenbenachrichtigungen durch den Publisher zu registrieren.

In AngularJS können Abonnenten Ereignisse mit `$on('event', callback)` abonnieren und Publisher verwenden `$emit('event', args)` oder `$broadcast('event', args)` zum Auslösen von Ereignissen.

Es ist wichtig zu beachten, dass das Observer-Design-Pattern viele Vorteile und Nutzen bietet, aber auch Nachteile wie Leistungseinbußen, insbesondere bei einer großen Anzahl von Beobachtern. Deshalb sollte die Wahl zwischen Observer und Publish/Subscribe je nach den Anforderungen und der Komplexität des Projekts getroffen werden.

Jetzt 200 € Guthaben sichern

Testen Sie Ihr Setup auf ccloud³

Registrieren Sie sich in der ccloud³ und erhalten Sie 200 € Startguthaben für Ihr Projekt – z. B. für eine PostgreSQL-VM mit automatischen Backups.

centron Redaktion Technische Redaktion

Das Redaktionsteam von centron schreibt Anleitungen aus dem Betriebsalltag: getestet auf unserer eigenen Plattform, betrieben im Rechenzentrum in Hallstadt bei Bamberg.

Kategorie JavaScript
Teilen
Noch offene Fragen?

Our team will help you with your specific setup - in German or English, by people who run the platform themselves.

War dieses Tutorial hilfreich?

Your answer is stored anonymously and helps us improve our tutorials.

Kommentare

No comments yet - be the first to ask a question about this tutorial.

Sign in to comment

Comments are open to centron customers. Sign in to your account to ask a question about this tutorial.

Weiterlesen

Das könnte Sie auch interessieren

Jetzt kostenlos anfangen

Melden Sie sich an und erhalten Sie in den ersten 60 Tagen ein Guthaben von 200 € bei centron.

Dieses Werbeangebot gilt nur für neue Konten. Angebot ausschließlich für Gewerbetreibende.

Jetzt loslegen Sales kontaktieren