« »

Observer Pattern als Antipattern

3. April 2009 Roland

Dieser Artikel ist Teil 10 von 14 der Artikelserie Design Pattern

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.

Merken und weiterempfehlen Diese Icons verlinken auf Bookmark Dienste bei denen Nutzer neue Inhalte finden und mit anderen teilen können.
  • Technorati
  • Wikio DE
  • Webnews
  • MisterWong
  • Y!GG
  • Digg
  • del.icio.us

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 Feedrss

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.

...deine Chance den ersten Kommentar zu schreiben... ;-)

Schreibe mir

zum Seitenanfang