Entwurfsmuster Flashcards

(49 cards)

1
Q

Welches Muster wenn “viele unterschiedliche, nicht verwandte Operationen auf einer Objektstruktur realisiert werden sollen”

A

Visitor

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Welches Muster wenn “sich die Klassen der Objektstruktur nicht ändern”

A

Visitor

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Welches Muster bei “häufig neue Operationen auf der Objektstruktur integriert werden müssen”

A

Visitor

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Welches Muster wenn “ein Algorithmus über die Klassen einer Objektstruktur verteilt arbeitet, aber zentral verwaltet werden soll”

A

Visitor

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Bei welchem Muster kommt “Element” vor?

A

Visitor

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Bei welchem Muster kommt “Visitor” vor?

A

Visitor (duh)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was sind Eigenschaften vom Visitor Pattern?

A
  • Leicht neue Operationen (durch neue Visitor Klassen) hinzufügen
  • Die Visitor und Element Hierarchie ist unabhängig
  • Element hinzufügen -> viele neue Methoden schreiben
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Was simuliert das Visitor Pattern?

A

Multimethoden

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Welches Muster wenn “auf die Inhalte eines Aggregates zugegriffen werden muss, ohne die innere Darstellung offen legen zu müssen”

A

Iterator

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Welches Muster wenn “mehrere (gleichzeitige bzw. überlappende) Abarbeitungen der Elemente in einem Aggregat erfolgen muss”

A

Iterator

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Welches Muster wenn “eine einheitliche Schnittstelle für die Abarbeitung verschiedener Aggregatstrukturen gebraucht wird, um polymorphe Iteration zu unterstützen”

A

Iterator

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Bei welchem Muster kommt “Aggregate” vor?

A

Iterator

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Welche Eigenschaften haben Iterator?

A
  • beliebige Abarbeitung der Elemente (Baum, Liste vorwärts oder rückwärts, …)
  • sie vereinheitlichen den Zugriff auf verschiedene Arten von Aggregaten
  • es können mehrere gleichzeitige Abarbeitungen stattfinden (wenn man nicht dumm ist und den Iterator richtig implementiert)
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Welche 2 Arten von Iteratoren gibt es?

A

Extern:
- hasNext und next sind public und der user schreibt den loop
Iterator<T> it = …
while (it.hasNext()) {}</T>

Intern
- hasNext und next sind private
- bei funktionaler Programmierung häufig
for (T value : values) {}
bzw.
… .stream().map(…). …

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Was sind Probleme von Iteratoren?

A
  • Die Struktur der zu Grunde liegenden Datenstruktur geht verloren (Baumstruktur). In diesem Fall evtl. interne Iteratoren bzw. gar keine Iteratoren verwenden
  • Verändern/hinzufügen des Aggregates während des Iterierens ist problematisch. Ineffiziente Lösung: Daten einfach kopieren. Besser: Daten nicht kopieren; wenn das gelingt, spricht man von einem robusten Iterator
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Welches Muster wenn “man den unveränderlichen Teil des Algorithmus nur einmal implementieren will und es Unterklassen zu überlassen, den veränderbaren Teil des Verhaltens festzulegen”

A

Template-Method

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Welches Muster wenn “gemeinsames Verhalten mehrere Unterklassen (zum Beispiel im Zuge einer Refaktorisierung) in einer einzigen Klasse lokal zusammengefasst werden soll, um Duplikate im Code zu vermeiden”

A

Template-Method

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Welches Muster wenn “man mögliche Erweiterungen in Unterklassen zu kontrollieren möchte, die Hooks als primitive Operationen aufrufen und nur das Überschreiben dieser Hooks (keiner anderer Methoden) in Unterklassen ermöglichen”

A

Template Method

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Was ist das Hollywood Prinzip und wo tritt es auf?

A

“Don’t call us, we’ll call you”
Die Oberklasse ruft Methoden der Unterklasse auf (sonst meistens umgekehrt)

Bei Template-Method, Factory

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Welche 2 Arten von überschreibbaren Operationen gibt es bei Template-Methods?

A

Abstrakte Methoden (müssen überschrieben werden) und Hooks (können überschrieben werden, haben aber auch eine Default Implementierung)

21
Q

Was für eine Art von Entwurfsmuster ist die Factory-Method?

A

Erzeugendes Entwurfsmuster

22
Q

Welches Muster wenn “eine Klasse Objekte erzeugen soll, deren Klasse aber nicht kennt”

A

Factory-Method

23
Q

Welches Muster wenn “eine Klasse möchte, dass ihre Unterklassen die Art der Objekte bestimmen, welche die Klasse erzeugt”

A

Factory-Method

24
Q

Welches Muster wenn “Klassen Verantwortlichkeiten an eine von mehreren Unterklassen delegieren und das Wissen, an welche Unterklasse delegiert wird, lokal gehalten werden soll”

A

Factory-Method

25
Welches Muster wenn "die Allokation und Freigabe von Objekten zentral in einer Klasse verwaltet werden soll"
Factory-Method
26
Bei welchem Muster kommt "Creator" vor?
Factory-Method
27
Bei welchem Muster kommt "Product" vor?
Factory-Method
28
Was ist das größte Problem der Factory-Method?
Die Creator und Product Typhierarchie muss gleich sein -> sehr viele Klassen
29
Was hat das Hollywood Prinzip mit Factory-Methods zu tun?
Oft kann das Verhalten der Factories ähnlich wie bei der Template-Method durch Hooks o.ä. gesteuert werden -> Oberklasse ruft Funktionen der Unterklasse auf
30
Welches Muster wenn "die Klassen, von denen Objekte erzeugt werden sollen, erst zur Laufzeit bekannt sind"
Prototype
31
Welches Muster wenn "vermieden werden soll, eine Hierarchie von Creator-Klassen zusammen mit einer parallelen Hierarchie von Product-Klassen zu erzeugen (also Factory-Method vermieden werden soll"
Prototype
32
Welches Muster wenn "jedes Objekt einer Klasse nur wenige unterschiedliche Zustände haben kann"
Prototype
33
Was für eine Art von Entwurfsmuster ist Prototype?
Erzeugendes Entwurfsmuster
34
Welche Method ist essenziell für die Entwicklung einer Prototype Struktur?
clone()
35
Welche Eigenschaften haben Prototypes?
- Der Client muss weniger Produktklassen kennen (nur Prototype, zB Polygon). Dann können einfacher neue konkrete Klassen hinzugefügt werden (zB Triangle, …) - Sie vermeiden eine sehr große Anzahl an Klassen (keine parallele Klassenhierarchie) - Es erlaubt, Klassen dynamisch zu laden
36
Welche Art von Entwurfsmuster sind Singletons?
Erzeugendes Entwurfsmuster
37
Welches Muster wenn "es genau ein Objekt einer Klasse geben soll und diese global zugreifbar sein soll"
Singleton
38
Welches Muster wenn "die Klasse durch Vererbung erweiterbar sein soll und Anwender die erweiterte Klasse ohne Änderungen verwenden können sollen"
Singleton
39
Welche Eigenschaften haben Singletons?
- Sie vermeiden globale Variablen - Meist wird nur 1 Instant erzeugt (Constructor ist private), es kann aber auch so implementiert werden, dass mehrere erzeugt werden können - Die Methode static Singleton instance() kann auch new SingletonChildClass() returnen (statt new Singleton())
40
Welche Art von Entwurfsmuster sind Decorator?
Entwurfsmuster für Struktur
41
Welches Muster wenn "dynamisch Verantwortlichkeiten zu Objekten hinzugefügt werden soll, ohne andere Objekte dadurch zu beeinflussen"
Decorator
42
Welches Muster wenn "Verantwortlichkeiten hinzugefügt, aber wieder auch entfernt werden sollen"
Decorator
43
Welches Muster wenn "Erweiterungen einer Klasse durch Vererbung unpraktisch sind, beispielsweise um eine sehr große Anzahl an Unterklassen zu vermeiden"
Decorator
44
Bei welchem Muster kommt "Component" vor?
Decorator
45
Welche Eigenschaften haben Decorator?
- Mehr Flexibilität als Vererbung (Hinzufügen der Verantwortlichkeiten bei Decorator: Runtime, bei Vererbung: Compile time) - Wenn bei einer Class Window zuerst der Decorator ScrollBar und dann der Decorator StatusBar hinzugefügt wird, ist die Identität des Objekts Status Bar; wenn man es umgekehrt macht, ist die Identität ScrollBar, aber beide Versionen haben die selben Verantwortlichkeiten - Es entstehen sehr viele kleine Klassen
46
Welche Art von Entwurfsmuster ist Proxy?
Entwurfsmuster für Struktur
47
Welche Arten von Proxies gibt es?
- Remote Proxies (Platzhalter für externe Objekte) - Virtual Proxies (Erzeugen Objekte bei Bedarf, v.a. wenn die Erzeugung aufwendig ist) - Protection Proxies (kontrollieren Zugriffe auf Objekte basierend auf Zugriffsrechten) - Smart References (zB Reference Counting -> wenn reference count auf 0 -> deallocaten, oder Locks/Mutex -> wenn count auf 1 -> Objekte müssen warten, bis count = 0 ist)
48
Bei welchem Entwurfsmuster kommt "Subject" vor?
Proxy
49
Was ist der Unterschied zwischen einer wertenden und nicht-wertenden Sichtweise?
Wertend: Manche Entwurfsmuster sind objektiv gut, manche objektiv schlecht (heißt Anti-Pattern wenn schlecht) Nicht wertend: Nichts ist immer gut/schlecht, alles hat Vorteile/Nachteile