Design Patterns 2 Flashcards

1
Q

Mi a template method célja?

A

Egy műveleten belül algoritmus vázat definiál és az algoritmus bizonyos lépéseinek implementálását a leszármazott osztályra bízza.

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

Mik a Template Method következményei?

A

Lehetővé teszi, hogy az algoritmus/folyamat invariáns részeit egy helyen definiáljuk és a változó részeket a leszármazott osztályban adjuk meg.
Megoldható a kódduplikálás elkerülése (DRY-elv): a hierarchiában a közös kódrészeket a szülő osztályban egy helyen adjuk meg.

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

Template Method UML?

A

Absztrakt ősosztály virtuális függvényekkel, amiket egy leszármazott valósít meg.

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

Template method PRO/CON?

A

PRO: Új viselkedés könnyen bevezethető, nem kell a meglévő kódot lényegi helyen változtatni.
CON: Futás közben nem tudjuk egyszerűen cserélni a viselkedést, rugalmatlan. (A származtatási hierarchia fordításkor eldől.)
Sok keresztkombinációra lehet szükség. -> robbanás

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

Mi a Strategy minta célja?

A

Célja az algoritmusok/viselkedések egy csoportján belül az egyes algoritmusok/viselkedések egységbe zárása és egymással kicserélhetővé tétele. (A kliens szemszögéből az általa használt algoritmusok/viselkedések szabadon kicserélhetők.)

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

Strategy minta UML?

A

Context osztálynak referenciája van egy Strategy interface-t megvalósító osztály példányra. A Strategy-t konkrtét osztályok valósítják meg.
Az osztály viselkedésének minden olyan aspektusára/diemnziójára melyet lecserélhetővé/bővíthetővé szeretnénk tenni, külön strategy hierarchiát vezetünk be.

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

Strategy PRO/CON?

A

PRO: Új viselkedés könnyen bevezethető, nem kell a meglévő kódot (lényegi helyen) változtatni. Több aspektus/dimenzió esetén nincs kombinatorikus robbanás az osztályhierarchiában.
Unit tesztelhetőség segíti. Hogyan? “Dummy” implementációkat tudunk neki átadni.

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

Mi az UNIT teszt?

A

Unit tesztek során az osztályt önmagában a függőségi nélkül teszteljük.

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

Melyik jellegzetes elvnek a megtestesülése a Strategy?

A

Program to an interface (and not to an impementation)

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

Mi a Singleton célja?

A

Biztosítja, hogy egy osztályból csak egy példányt lehessen létrehozni és ehhez az egy példányhoz globális hozzáférést biztosít.

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

Singleton és UNIT tesztelhetőség?

A

Sok esetben nem javasolt a Singleton használata, mert mindig az osztály típusával tér vissza, nem tudunk egy alternatív “dummy” implementációval visszatérni, ami pedig a unit tesztelésnél sokszor alapelvárás.

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

Mi az Abstract Factory minta célja?

A

Interfészt biztosít ahhoz, hogy egymással összefüggő objektumok családjait hozzuk létre anélkül, hogy specifikálnánk a konkrét osztályaikat. Így az objektumok létrehozása egy interfészen keresztül történik, a kódunk nem fog függeni a létrehozott objektumok konkrét osztályától/típusátol.

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

Abstract Factory UML?

A

AbstractFactory Interface. Egy Client osztály mely rendlelkezik egy AbstracFactory referenciával. Van legalább egy Product interface és azt megvalósító osztály. Ilyen példányokat hoznak létre az AbstractFactory-t megvalósító osztályok.

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

Mikor használjuk az Abstract factory-t?

A

Akkor használjuk, amikor a rendszernek függetlennek kell lennie az általa létrehozott dolgoktól (pl. felhasználói felület elemek)
A rendszernek több termékcsaláddal kell együttműködnie.
A rendszernek szorosan összetartozó “termék” objektumok adott családjával kell dolgozni és ezt akarjuk kényszeríteni a rendszerben.

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

Abstract factory PRO/CON?

A

PRO:
Elszigeteli a konkrtét osztályokat
A termékcsaládokat könnyű kicserélni
Elősegíti a termékek közötti konzisztenciát

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

Abstract factory PRO/CON?

A

PRO:
Elszigeteli a konkrtét osztályokat
A termékcsaládokat könnyű kicserélni
Elősegíti a termékek közötti konzisztenciát