Observer Pattern als Antipattern
3. April 2009 Roland
- Design Pattern Einführung
- Singleton Pattern Problemstellung
- Singleton Pattern Deklaration
- Singleton Pattern Einsatzbereiche
- Facade Pattern Problemstellung
- Asynchrone Kommunikation mit JavaScript und Facade Pattern
- Wann wird das Fassaden Pattern zum Antipattern?
- Observer Pattern Problemstellung
- Observer Pattern Deklaration
- Observer Pattern als Antipattern
- Adapter Pattern Problemstellung
- Adapter Pattern Deklaration
- Adapter Pattern Einsatzbereiche
- Adapter Pattern als Antipattern
Mit dem Observer Pattern können wir die Observer bei Änderungen des Subjekts informieren. Das ist prinzipiell eine super Sache. Wenn du jedoch ein Subjekt mit hunderten von Observern verknüpfst, wirst du sehr bald Geschwindigkeitseinbusen erfahren.
Ein Beispiel aus meiner Spielkiste
Ich erstellte mal eine dynamische HTML Generierung, die bei jeder Änderung des Modells informiert wurde. Die Texte innerhalb der Modelle änderten sich beim Aufruf des betroffenen Anwendungsfalls mehrfach. Der Aufruf der Observer führte dazu, dass das zu generierende HTML Dokument mehrfach aufgebaut und verändert wurde. Und der Aufbau des HTML Dokuments führte zu einer grotten langsamen Reaktionszeit. Ich baute komplexe Tabellen mit dieser Vorgehensweise zusammen. Beim Aufbau der Tabellen ist mir dann das Gesicht eingeschlafen. Zu viele Mitteilungen können das System blockieren.
Welche Gegenmassnahme rettete mich?
Abhilfe fand ich, indem ich die Textänderungen erst in die Modelle einfügte und dann nach der vollständigen Bearbeitung die Werte aus den Modellen übernahm. Mein Observer Pattern war dann auf Stufe Anwendungsfall eingesetzt. Sobald der Anwendungsfall komplett abgearbeitet wurde, konnte ich mit einem einzigen Zugriff die komplexen HTML Tabellen aufbauen.
Tipp
Falls du viele Änderungen auf dem Subjekt hast, und dir die Geschwindigkeit in den Keller geht, solltest du die notify() Methode überdenken und eventuell eine andere Art der Benachrichtigung verwenden.
Design Pattern sind dazu da dir das Leben zu erleichtern. Ein geiles Design muss jedoch immer noch funktionieren.
Der Beitrag wurde
am Freitag, den 3. April 2009 um 07:09 Uhr veröffentlicht
und wurde unter Design Pattern abgelegt.
Kurzlink: http://www.baldenhofer.eu/blog/?p=784
Dir gefiel der Artikel? Dann abonniere doch den RSS Feed![]()
Du kannst die Kommentare zu diesem Eintrag durch den RSS 2.0 Feed verfolgen. Du kannst einen Kommentar schreiben, oder einen Trackback auf deiner Seite einrichten.








