suchen
HeimJavajavaLernprogrammDas Observer Design Pattern in Java verstehen

Understanding the Observer Design Pattern in Java

Das Observer Design Pattern in Java verstehen

Problem

Das Observer-Muster befasst sich mit der Notwendigkeit, eine Reihe von Objekten (Beobachtern) automatisch zu benachrichtigen, wenn sich der Zustand eines anderen Objekts (Subjekts) ändert. Dies ist in Szenarien nützlich, in denen ein Objekt mit Änderungen in einem anderen Objekt aktualisiert bleiben muss, beispielsweise in ereignisgesteuerten Systemen oder Benachrichtigungssystemen.

Lösung

Das Observer-Muster umfasst zwei Hauptkomponenten:

  1. Betreff: Das Objekt, das einen bestimmten Zustand hält und Beobachter über Änderungen dieses Zustands benachrichtigt.
  2. Beobachter: Die Schnittstelle, die die Aktualisierungsmethode definiert, die vom Subjekt aufgerufen wird, um Beobachter über Änderungen zu benachrichtigen.

Das Subjekt verwaltet eine Liste von Beobachtern und benachrichtigt sie durch Aufrufen ihrer Aktualisierungsmethoden, wenn sich sein Status ändert.

Für und Wider

Vorteile

  • Entkopplung: Das Muster fördert eine lockere Kopplung zwischen dem Subjekt und den Beobachtern, sodass diese sich unabhängig entwickeln können.
  • Reaktivität: Ermöglicht Beobachtern, automatisch Updates zu erhalten, wenn sich der Zustand des Subjekts ändert, und unterstützt so die Entwicklung reaktiver Systeme.
  • Erweiterbarkeit: Neue Beobachter können hinzugefügt werden, ohne das vorhandene Subjekt oder den Code anderer Beobachter zu ändern.

Nachteile

  • Komplexität:Kann zu zusätzlicher Komplexität führen, insbesondere in Systemen mit vielen Beobachtern und häufigen Ereignissen.
  • Beobachterverwaltung:Die Verwaltung des Lebenszyklus von Beobachtern, einschließlich Registrierung und Entfernung, kann komplex sein.
  • Potenzielle Leistungsprobleme: Die Benachrichtigung einer großen Anzahl von Beobachtern kann sich auf die Leistung auswirken, insbesondere wenn die Aktualisierungsmethoden komplex sind.

Beispiel einer realen Anwendung

Ein praktisches Beispiel für das Observer-Muster sind Social-Media-Benachrichtigungssysteme, in denen Benutzer (Beobachter) über die Aktivitäten ihrer Freunde (Subjekte) wie Beiträge und Statusaktualisierungen benachrichtigt werden.

Beispielcode in Java

java
// Observer Interface
public interface Observer {
    void update(String message);
}

// Subject Interface
public interface Subject {
    void registerObserver(Observer observer);
    void removeObserver(Observer observer);
    void notifyObservers();
}

// Concrete Subject
public class SocialMediaAccount implements Subject {
    private List<observer> observers = new ArrayList();
    private String statusUpdate;

    @Override
    public void registerObserver(Observer observer) {
        observers.add(observer);
    }

    @Override
    public void removeObserver(Observer observer) {
        observers.remove(observer);
    }

    @Override
    public void notifyObservers() {
        for (Observer observer : observers) {
            observer.update(statusUpdate);
        }
    }

    public void postUpdate(String status) {
        this.statusUpdate = status;
        notifyObservers();
    }
}

// Concrete Observer
public class Follower implements Observer {
    private String name;

    public Follower(String name) {
        this.name = name;
    }

    @Override
    public void update(String message) {
        System.out.println(name + " received update: " + message);
    }
}

// Client Code
public class Client {
    public static void main(String[] args) {
        SocialMediaAccount account = new SocialMediaAccount();

        Observer follower1 = new Follower("Alice");
        Observer follower2 = new Follower("Bob");

        account.registerObserver(follower1);
        account.registerObserver(follower2);

        account.postUpdate("Hello, followers!");
        account.postUpdate("Check out my new post!");

        account.removeObserver(follower1);
        account.postUpdate("Another update!");
    }
}
</observer>

Das obige ist der detaillierte Inhalt vonDas Observer Design Pattern in Java verstehen. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme
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 KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Beste grafische Einstellungen
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌
Will R.E.P.O. Crossplay haben?
1 Monate vorBy尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

SecLists

SecLists

SecLists ist der ultimative Begleiter für Sicherheitstester. Dabei handelt es sich um eine Sammlung verschiedener Arten von Listen, die häufig bei Sicherheitsbewertungen verwendet werden, an einem Ort. SecLists trägt dazu bei, Sicherheitstests effizienter und produktiver zu gestalten, indem es bequem alle Listen bereitstellt, die ein Sicherheitstester benötigen könnte. Zu den Listentypen gehören Benutzernamen, Passwörter, URLs, Fuzzing-Payloads, Muster für vertrauliche Daten, Web-Shells und mehr. Der Tester kann dieses Repository einfach auf einen neuen Testcomputer übertragen und hat dann Zugriff auf alle Arten von Listen, die er benötigt.

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

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.