Design Patters - Observer

Volvagia

Top Contributor
Ich hab gerade den FAQ-Beitrag zu den Design Pattern gelesen, und habe mich gefragt, ob folgendes richtig wäre:

attachment.php


Sämtliche Klassen, die Infos von anderen empfangen sollen sich dann über addObservable mit dem Namen aus den Constants registrieren, und andere Klassen über diese die Daten zusenden.

Gibt es bei dem UML etwas zu bemängeln? :)
 

Anhänge

  • Observer.jpg
    Observer.jpg
    61,1 KB · Aufrufe: 71

Antoras

Top Contributor
Ich würde keine String sonder Integer-Konstanten (Zweierpotenzen) nehmen. Hat den Vorteil, dass eine Klasse bei mehreren Observern registriert werden kann ohne groß Rechenaufwand zu betreiben. Z.B. gibt eine Verknüpfung aus den Konstanten
Code:
x = 4 | 16 | 32
immer ein Wert ungleich 0 wenn der Wert wieder mit der Konstante verUNDet wird.
Code:
x & 4 = 4; x & 8 = 0; x & 32 = 32
.
Außerdem würde ich die Konstanten nicht in eine extra Klasse auslagern, ich würde sie nicht mal öffentlich zugänglich machen. Du musst sowieso wissen welche Klasse mit welcher kommunizieren muss. Du kannst also verschiedene Registrierungsmethoden schreiben, z.B.
Code:
addObserver1(Observer), addObserver2(Observer), addObserverN(Observer)
wobei ObserverX natürlich durch sprechendere Namen zu ersetzten wären.
 

Volvagia

Top Contributor
Meinst du in etwa so?

attachment.php


Dann hätte ich ja einen erheblichen Mehraufwand. :(
Obwohl es den Source auf Dauer gesehen übersichtlicher und kürzer machen würde.
Aber aufs Interface könnte ich ja dann gleich verzichten, da ich ja die sich registrierenden Klassen pro Methode/Variable genauer spezifizieren könnte, da sich durch die genau bestimmten Namen Wiederverwendbarkeit ausschließen lässt.
 

Anhänge

  • observer.jpg
    observer.jpg
    31,4 KB · Aufrufe: 64

Antoras

Top Contributor
Die Idee mit der Map war soweit schon ok, du kommst nur irgendwann ins Schwitzen wenn du nur eine update(Object)-Methode hast. Das Problem ist ja, dass du wissen musst was mit dem Event, das durch update() verschickt wird, gemacht werden soll. Und woher weist du was das Objekt beinhaltet?

Entweder hast du nur ein Event und verschiedene Implementierungen, die beim Aufkommen eines Events nicht alle benachrichtigt werden sollen (dann ist die Map nützlich) oder du hast verschiedene Events, die alle nur "ihre" Implementierungen benachrichtigen sollen. In letzterem Fall wirst du nicht drumherum kommen, dir jeweils einen spezifischen Observer zu erstellen, andernfalls wirst du zur Laufzeit mit unzähligen Abfragen prüfen müssen welches Event nun von wem bearbeitet werden soll.
 
Zuletzt bearbeitet:

Volvagia

Top Contributor
Ach so, ja war gedacht, dass sich alles, was irgendwie etwas empfängt dort einträgt, und alles, was etwas absendet nur an diese Objekte schickt.
Meinst du, ich soll noch einen zusätzlichen String übergeben? So wie z. B. beim ActionEvent?
 

Antoras

Top Contributor
Ich meine du solltest mal versuchen ein Programm zu schreiben, das sich des Design Patterns bedient. Design Pattern versteht man eigentlich erst wenn man sieht wie sie in einem konkreten Anwendungsfall funktionieren.

Das was du in den UML-Diagrammen bisher dargestellt hast ist viel mehr die Idee hinter dem Pattern und kein Anwendungsfall bei dem diese Idee tatsächlich angewendet wird.
 

Volvagia

Top Contributor
Ok, danke. :)
Irgendwie muss man am Ende sowieso sehen, was einem selbst am besten liegt. Der Beste Stil nützt einen nichts, wenn man damit nicht umgehen kann.
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Design Patterns und die Keywords Softwareentwicklung 22
P Zwei Fragen zum Design Softwareentwicklung 16
K Einlesen einer .dat-Datei (verschiedene Formate) | Entwicklung unter Einsatz von Design-Patterns Softwareentwicklung 0
L Design Patterns zu abstraktem Problem Softwareentwicklung 2
M Visito/Besucher Design-Pattern/Strukturmuster Softwareentwicklung 4
M Sauberes Design, Clean Code, etc. pp. Softwareentwicklung 47
G Projekte die Design by Contract verwendet haben?? Softwareentwicklung 2
H2SO3- design pattern: code in model classes Softwareentwicklung 5
G Design Pattern gesucht! Softwareentwicklung 4
D Design Pattern Softwareentwicklung 6
C Wiki für ein Uni - High Level Design Softwareentwicklung 5
S Design Pattern für zwei abhängige Klassen Softwareentwicklung 8
Jay_030 Checkstyle: Lösungsvorschläge für Design for Extension Softwareentwicklung 7
J Design Patterns in Programm hineinfließen lassen Softwareentwicklung 23
G Suche Programm für Masken Design für Pflichtenheft Softwareentwicklung 5
W Frage zu a)Innere Klassen und b)OO Design Softwareentwicklung 13
D Datenbank-Design Softwareentwicklung 3
M Datei-Typ-Design Softwareentwicklung 10
K Design Pattern für einen simple Rechenmaschine Softwareentwicklung 18
S Design-Frage: Wie viele Fassaden? Softwareentwicklung 4
G Test First <-> Design First Softwareentwicklung 6
M IllegalStateException - Problem mit GUI und Observer pattern Softwareentwicklung 4
F Wann Observer Pattern nehmen und Vorteile davon? Softwareentwicklung 5

Ähnliche Java Themen

Neue Themen


Oben