Design Patterns Flashcards

1
Q

explain Strategy Pattern

A

Löst Problem der “Kreuzvererbung”, also wenn verschiedene Childklassen eine unterschiedliche Zusammensetzung von Methoden benötigen und dadurch Kreuzungen im Vererbungsbaum entstehen würden.
Wie? Für verschiedene Behaviors (z.B. Flying) eines Objekts (z.B. Duck) werden Interfaces (z.B. IFlyingBehavior) (=abstrakte Klassen mit true virtual methoden) erzeugt. Von diesen Erben jeweils Klassen für bestimmte Instanzen des Behaviors (z.B. JetFlyingBehavior). Bei der Erstellung einer Instanz werden Pointer auf die benötigten Behavior dem Konstruktor mitgegeben, der diese als Member übernimmt.
Um eine neue Variante des Objekts zu erzeugen können so einfach neue Strategien (Behavior) als Childklasse des entsrpechenden Interfaces implementiert werden und ein entsprechendes Objekt instanziiert werden.

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

explain Observer Pattern

A

Das OBserver Pattern lässt sich benutzen, wenn ein oder mehrere Observer(z.B. Display) ein Observable (z.B. Wetterstation) beobachten und über Statusänderung informiert werden wollen. Dafür wird ein Observer-Interface mit der methode update() eingerichtet, sowie ein Observable-Interface mit den methoden add(), remove() und notify(). Über add() und remove() wird eine Liste der zuhörenden Observer verwaltet. Ändert sich das Observable, werden diese über notify() informiert und deren update() aufgerufen. Die Observer müssen mit einem Observable konstruiert werden, damit sie auf diesen in update() zugreifen können.

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

explain Decorator Pattern

A

Mit dem Decorator Pattern können Objekte (z.B Getränke in einem Laden) um bestimmte Eigenschaften ergänzt bzw. Erweitert werden. Dafür wird das ursprüngliche Objekt in ein Weiteres, den Decorator, gewrappt, das nach außen hin die gleiche Schnittstelle hat, aber eine zusätzliche Ergänzung hinzufügt (z.B. Topping). Der Decorator bekommt zur Construction das ursprüngliche Objekt übergeben und ruft dieses bei Bedarf auf. Dieser Aufbau kann beliebig kaskadiert werden. Dadurch können Objekte während der runtime ergänzt werden.
Vor Allem sinnvoll bei möglichst unterschiedlich-artigen Ergänzungen

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

explain Command Pattern

A

Bestimmte Commands, die zwischen Programmteilen verschickt werden werden hier auch als Objekte instanziiert (und nicht als Funktionsaufrufe o.ä.). Dadurch können diese gespeichert, rückgängig gemacht, weitergereicht, … werden. Bei dem Setup wird ein Invokerobjekt mit verschiedenen Commands konstruiert, die von der ICommand-Klasse Erben. Diese wird mit einem Zielobjekt instanziiert und enthält execute() und unexecute() methoden, die jeweils Methoden des Zielobjekts ausführen. Der Invoker kann über stacks, queues, etc. verschiedene Dinge mit der Command-History anstellen

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

explain Template Method Pattern

A

The Template Method pattern suggests that you break down an algorithm into a series of steps, turn these steps into methods, and put a series of calls to these methods inside a single template method. The steps may either be abstract, or have some default implementation. To use the algorithm, the client is supposed to provide its own subclass, implement all abstract steps, and override some of the optional ones if needed (but not the template method itself).

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

Explain Factory Method Pattern

A

A Factory handles the creation of objects. Implementation:
There is a product interface, with several child classes.
Also, there is a Factory interface, with a virtual method createProduct() of return type Product (or other name) and possibly some additional code. The child classes of the Factory class implement the creation of specific subclasses of the interface product.

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

Explain Facade Pattern

A

The Facade is a class, that handles calls to third party code. It implements only the functions, which are used by your software and acts as a single entry point to that code. Thus only the facade needs to be changed when third party code changes and the rest of your code doesn’t need to know anything about the workings of the third party code

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

Explain Adapter Pattern

A

An Adapter converts the interface of an object in order to be used by other objects, by wrapping said object. The object is not even aware of the Adapter, communicating with it only through it’s interface. It can be used to match different objects without changing their implementation

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

What is the difference between Adapter and Facade Pattern?

A

A Facade interacts with third party code, while an Adapter does so with own code. Also, A Facade works with an entire subsystem, while an Adapter only interacts with one object

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

What kind of design patterns are there?

A

creational
structural
behavioral

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

What 5 creational design patterns are there?

A

Factory Method
Abstract Factory
Prototype
Builder
Singleton

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

What is the prototype design pattern?

A

Prototype pattern Implements a prototype interface with a clone() method. This copies an entire object with all it’s fields. Calling it does not require knowledge of which exact type the copied instance is.

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

explain builder pattern

A

When constructing complicated objects, there are two bad solutions: large constructor or many subclasses.
Instead it is better to create builder classes, that handle the build of different versions of the object through it’s methods. One can also create a director class, that manages the builders, if calling it’s methods gets too complicated.

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