„Tervezési minták (Sznikák)” változatai közötti eltérés
Új oldal, tartalma: „Néhány fontosabb, gyakrabban használt tervezési minta: === Creational === * '''Factory method''': a leszármazottra bízza az objektum létrehozását * '''Abstract…” |
Nincs szerkesztési összefoglaló |
||
| 20. sor: | 20. sor: | ||
=== Factory method === | === Factory method === | ||
'''Célja:''' A Factory Method lehetővé teszi, hogy az új példány létrehozását a leszármazott osztályra bízzuk. | '''Célja:''' A Factory Method lehetővé teszi, hogy az új példány létrehozását a leszármazott osztályra bízzuk. Szokás virtuális konstruktornak is nevezni. | ||
Szokás virtuális konstruktornak is nevezni. | '''Példa:''' Framework, ami egyszerre több dokumentum kezelését támogatja (mint pl. a Visual Studio) | ||
Példa: Framework, ami egyszerre több dokumentum kezelését támogatja (mint pl. a Visual Studio) | '''Használjuk, ha''' | ||
Használjuk, ha | * Egy osztály nem látja előre annak az objektumnak az osztályát, amit létre kell hoznia | ||
Egy osztály nem látja előre annak az objektumnak az osztályát, amit létre kell hoznia | * Ha egy osztály azt szeretné, hogy leszármazottai határozzák meg azt az objektumot, amit létre kell hoznia | ||
Ha egy osztály azt szeretné, hogy leszármazottai határozzák meg azt az objektumot, amit létre kell hoznia | === Abstract factory === | ||
Abstract factory | '''Példa:''' Ablakos rendszerek, GUI vezérlőelemek (ablak, nyomógomb, kiválasztógomb, stb.) | ||
Példa: Ablakos rendszerek, GUI vezérlőelemek (ablak, nyomógomb, kiválasztógomb, stb.) | '''Használjuk, amikor''' | ||
Használjuk, amikor | * a rendszernek függetlennek kell lennie az általa létrehozott dolgoktól ("termék" objektumok, pl. felhasználói felület elemek) | ||
a rendszernek függetlennek kell lennie az általa létrehozott dolgoktól ("termék" objektumok, pl. felhasználói felület elemek) | * a rendszernek több termékcsaláddal kell együttműködnie | ||
a rendszernek több termékcsaláddal kell együttműködnie | * a rendszernek szorosan összetartozó "termék" objektumok adott családjával kell dolgoznia, és ezt akarjuk kényszeríteni a rendszerben | ||
'''Előnyök: ''' | |||
Előnyök: | * Elszigeteli a konkrét osztályokat | ||
Elszigeteli a konkrét osztályokat | * A termékcsaládokat könnyű kicserélni | ||
A termékcsaládokat könnyű kicserélni | * Elősegíti a termékek közötti konzisztenciát | ||
Elősegíti a termékek közötti konzisztenciát | '''Hátrányok:''' | ||
Hátrányok: | * Nehéz új termék hozzáadása. Ekkor az Abstract Factory egész hierarchiáját módosítani kell, mert az interfész rögzíti a létrehozható termékeket | ||
Nehéz új termék hozzáadása. Ekkor az Abstract Factory egész hierarchiáját módosítani kell, mert az interfész rögzíti a létrehozható termékeket | * Megjegyzés: ezt bizonyos esetekben ki lehet kerülni | ||
Megjegyzés: ezt bizonyos esetekben ki lehet kerülni | |||
Singleton | Singleton | ||
Célja: 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. | Célja: 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. | ||