Software Entwurfsmuster Flashcards

1
Q

Was ist das Ziel von Entwurfsmustern?

A
  • Lösung von Problemen unabhängig der Programmiersprache
  • Jede Komponente sollte so austauschbar wie möglich sein
  • Objekte sollten so unabhängig wie möglich voneinander sein
  • Kommunikationsschnittstellen zwischen Objekten sollten auf das absolute Minimum reduziert werden
    Vorteil: Hohe Wartbarkeit, Hohe Testbarkeit, Hohe Erweiterbarkeit
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Was gilt es bei Entwurfsmustern zu beachten?

A
  • Muster sollen Probleme vereinfachen
  • Ein Muster muss zum Problem passen
  • Es gibt nicht das Muster für alle Probleme
  • Muster sind nicht auf objektorientierte Sprachen beschränkt
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Welche 3 Arten von Pattern gibt es?

A
  • Erzeugungsmuster
  • Strukturmuster
  • Verhaltensmuster
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Was sind Erzeugungsmuster und was ist ihr Zweck?

A
  • Muster die der Erzeugung von Objekten verbessert
  • Motivation: Erzeugung eines Objektes und deren Verwendung soll voneinander entkoppelt werden
  • Erzeugung eines Objektes mit new wird in eine eigene Klasse ausgelagert
  • Die Erzeugerklasse wird über ein abstraktes Interface abgewickelt und liefert ein abstraktes Interface eines Objekts zurück.
  • Erzeugerklasse kann erzeugte Objekte beliebig austauschen
    *Erzeugerklasse kann beliebig ersetzt werden
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Was ist das Singleton-Pattern?

A
  • Verwendung: Wenn sicher gestellt werden muss, dass eine bestimmte Komponente nur einmal innerhalb eines Systems existiert
  • Es wird über einen privaten Konstruktor und eine statische getInstance() Methode realisiert
  • Die Instanz selbst ist ebenfalls statisch
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Was ist die Abstract-Factory?

A
  • Eine Abstract Factory erzeugt eine Produktfamilie, die aus einzelnen Produkten besteht. Diese Produktfamilie bilden eine Einheit.
  • Die Factory kann ausgetauscht werden.
  • Die Abstract Factory wird über eine Schnittstelle realisiert, die je nach Kontext konkret implementiert wird.
  • Die Factory gibt abstrakte Referenzen zurück, die je nach Factory mit konkreten Unterklassen implementiert sind.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Was sind Vorteile und Nachteile der Abstract Factory?

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

Was ist die Factory-Method?

A
  • Trennung von Erzeugung und Nutzung von Objekten.
  • Die Erzeugung eines Objekts wird an eine Methode einer separaten Klasse (Factory-Objekt) delegiert
  • Konkrete Unterklassen erzeugen Objekte für spezifische Kontexte.
  • Die Factory-Methode kann parametrisiert sein.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Was sind Vor- und Nachteile der Factory-Method?

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

Was ist das Builder-Pattern?

A
  • Hintergrund: Komplexe Objekte werden konstruiert, deren Erzeugung mehrere Schritte erfordert.
  • Umsetzung:
    • Eine Builder-Klasse wird erzeugt, die andere Objekte erzeugt
    • Die Klasse erlaubt das schrittweise Festlegen von Attributen
    • Eine build()-Methode erstellt dann das Objekt anhand der festgelegten Attribute
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Was sind Strukturmuster und wofür benutzt man sie?

A
  • Strukturmuster erleichtern Erstellung objektorientierter Programme durch vorgegebene Schablonen.
  • Muster erklären, wie man Komponenten zu größeren Strukturen zusammensetzt.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Was ist das Facaden-Pattern?

A
  • Eine Facade ist eine Schnittstelle zu einem komplexen System.
  • Die Komplexität wird gegenüber dem Klienten verborgen. Stattdessen bietet die Fassade eine vereinfachte, eingeschränkte Schnittstelle.
  • Der Klient greift ausschließlich auf die Fassade zu.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Was sind Vor- und Nachteile des Facaden-Pattern?

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

Was ist das Adapter-Pattern?

A
  • Gegeben sind zwei Systeme, die miteinander kommunizieren müssen, aber keine kompatible Schnittstelle besitzen.
  • Ein Adapter vermittelt zwischen den beiden Systemen
  • Beide Systeme bleiben unverändert: Der Adapter übersetzt die Schnittstelle des adaptierenden Systems entsprechend der Erwartung des Klienten.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Was sind Vor- und Nachteile des Adapter-Pattern?

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

Was ist das Proxy-Pattern?

A
  • Ein Proxy ist ein Stellvertreter einer anderen Klasse
  • Er wird statt der originalen Klasse verwendet und kontrolliert den Zugriff auf diese Klasse.
  • Ein Proxy implementiert die Schnittstelle einer anderen Klasse.
  • Anfragen an die Schnittstelle werden an das Objekt weitergeleitet, können aber zusätzliche Operationen und Prüfungen durchlaufen.
17
Q

Was sind Vor- und Nachteile des Proxy-Pattern?

A
18
Q

Was ist das Decorator-Pattern?

A
  • Ein Decorator erweitert eine Klasse um Zuständigkeiten, ohne sie abzuleiten
  • Das Objekt wird durch die Erweiterung nicht verändert.
  • Eine Decorator-Klasse enthält Komponenten, die sie dekorieren.
  • Sie implementieren die selbe Schnittstelle, können aber auch weitere Funktionen hinzufügen.
19
Q

Was sind Vor- und Nachteile des Decorator-Pattern?

A
20
Q

Was sind Verhaltensmuster?

A

Grundsätzliche Motivation: Erleichtern der Kommunikation zwischen Objekten mit gleichzeitig geringer Kopplung.

21
Q

Was ist das Template Method-Pattern?

A
  • Kontext: Ein Algorithmus wird entwickelt.
  • Der Ablauf des Algorithmus ist vordefiniert, Teile des Algorithmus dürfen jedoch unterschiedlich implementiert sein
  • Abstrakte Klasse mit finaler Methode, die Algorithmus beschreibt.
  • Algorithmus ruft eigene und abstrakte Methoden auf
22
Q

Was ist das Observer-Pattern?

A
  • Ein Objekt besitzt einen Zustand, der sich ändern kann.
  • Andere Objekte (Beobachter / Observer) möchten über die Zustandsänderung informiert werden.
  • Die Liste der Observer sollte dynamisch sein.
  • Beispiel: Eine Controller-Klasse möchte informiert werden, wenn ein Nutzer eine GUI-Eingabe ändert. (Listener)
23
Q

Was sind Vor- und Nachteile des Observer-Patterns?

A
24
Q

Was ist das Command-Pattern?

A
  • Befehle werden in eigene Klassen ausgelagert und als Command-Objekte verwaltet.
  • Damit wird ein Aufrufer (Invoker) von einem Empfänger (Receiver) eines Befehls entkoppelt.
  • Ein Aufrufer ruft Command-Objekte direkt auf. Der konkrete Empfänger ist für den Aufrufer nicht relevant
25
Q

Was sind Vor- und Nachteile des Commands-Pattern

A
26
Q

Was ist das Chain of Responsibility Pattern?

A
  • Es gibt eine Kette von Objekten. Jedes Objekt kann spezifische Anfragen verarbeiten und kennt das nächste Objekt in der Kette.
  • Eine Anfrage wird an das erste Objekt geleitet.
  • Für jedes Objekt gilt:
    -> Ist ein Objekt für die Anfrage zuständig, führt es ihre Verarbeitung durch.
    -> Ansonsten wird die Anfrage an das nächste Objekt in der Kette weitergereicht.
  • Ein Objekt kann eine Anfrage verändern.
  • Es ist möglich, dass kein Objekt in der Kette das Problem verarbeiten kann. Dann sollte ein Standardverhalten implementiert werden.