Muster als verallgemeinter Strukturen VL 8 Flashcards
Welche Kopplungen gibt es?
- Aufruf
- Ereignis
- Signal
Was ist der Aufruf bei einer Kopplung?
Klient A kennt den Dienstleister B und erwartet eine bestimmte Dienstleistung.
Was ist ein Ereignis bei einer Kopplung?
Wird von Verteiler A an bestimmten Empfänger B weitergeleitet. Keine Reaktion erwartet.
Was ist ein Signal bei einer Kopplung?
Erzeuger A sendet an alle Empfänger B in Umgebung ein Signal (Broadcast). Empfänger meist anonym.
Was ist das Zyklen Problem?
2 Klassen aktualisieren sich, dadurch Endlos Schleife beim informieren des anderen.
Was ist ein Lösungsansatz für Zyklen Problem?
Polling: nur eine Klasse aktualisiert und informiert die andere Klasse.
Was ist der Nachfolger der Polling Methode?
Publish-Subscribe-Prinzip
Was ist der Zweck des Entwurfsmuster Beobachter?
- synchronisieren der Änderungen eines zentral verwalteten Subjekts
- Beobachter muss dem beobachteten Objekt nicht bekannt sein
Was ist die Motivation des Entwurfsmuster Beobachter?
- Konsistenz bei Änderungen der Objekte sicherstellen
- Klassen schwach miteinander koppeln
- Reaktion nach Änderung durch Beobachter
Was ist ein Muster?
Eine Abstraktion einer konkreten Form, die wiederholt in bestimmten Kontexten auftritt.
Was ist ein Entwurfsmuster?
Eine Vorlage für eine Lösung ohne Implementierung.
Wozu werden Entwurfsmuster verwendet?
- Vorlagen für erfolgreiche Problemlösungen
- vereinheitlichte, wiedererkennbare Lösungen
- höhere Qualität von Entwürfen
Was muss eine Klasse machen, um Beobachter zu sein?
- jede Klasse, die andere Klasse beobachten möchte, mss das Interface Beobachter implementieren
- Exemplare melden sich bei beobachtbarem Exemplar durch setzeBeobachter()
- Reaktion auf Änderungssignal in beachteÄnderung()
Was muss eine Klasse machen, um beobachtbar zu sein?
- jede Klasse muss von der abstrakten Klasse Beobachtbar erben
- Zustandsänderungen werden mithilfe von informiereÜberÄnderung() an Beobachter weitergegeben
Worin besteht der Nutzen des Geheimnisprinzips?
Dient dazu, um Fehler auszuschließen. Innenleben einer Klasse ist weitgehend geheim und Zugriff von außen nur durch Schnittstellen. Damit verhindert man z.B. dass ein andere Programmierer diese unfreiwillig manipuliert und Fehler entstehen.