„Tervezési minták (Sznikák)” változatai közötti eltérés

Kavics (vitalap | szerkesztései)
Ú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…”
 
Kavics (vitalap | szerkesztései)
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
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.