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

Kavics (vitalap | szerkesztései)
Nincs szerkesztési összefoglaló
Kavics (vitalap | szerkesztései)
Nincs szerkesztési összefoglaló
19. sor: 19. sor:
* '''Command'''
* '''Command'''


=== 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. Szokás virtuális konstruktornak is nevezni.
'''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.
'''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)
25. sor: 25. sor:
* 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'''
38. sor: 38. sor:
* 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.
Megoldás:
'''Megoldás:'''
Legyen az osztály felelőssége, hogy csak egy példányt lehessen belőle létrehozni
* Legyen az osztály felelőssége, hogy csak egy példányt lehessen belőle létrehozni
Biztosítson globális hozzáférést ehhez az egy példányhoz.
* Biztosítson globális hozzáférést ehhez az egy példányhoz.
Az Instance osztály-művelet (statikus) meghívásával lehet példányt létrehozni, illetve az "egyetlen" példányt elérni. A Singleton::Instance()
Az Instance osztály-művelet (statikus) meghívásával lehet példányt létrehozni, illetve az "egyetlen" példányt elérni. A Singleton::Instance()
Mindig ugyanazt az objektumot adja vissza
* Mindig ugyanazt az objektumot adja vissza
Bárhol leírható ez:
* Bárhol leírható ez:
C++ esetén Singleton::Instance()
      * C++ esetén Singleton::Instance()
Java esetén Singleton.GetInstance()
      * Java esetén Singleton.GetInstance()
C# esetén propertyvel célszerű: Singleton.Instance
      * C# esetén propertyvel célszerű: Singleton.Instance
globális hozzáférés a példányhoz
      * globális hozzáférés a példányhoz
A Singleton konstruktora protected láthatóságú! Ez garantálja, hogy csak a statikus Instance metódushíváson keresztül lehessen példányt létrehozni.
A Singleton konstruktora protected láthatóságú! Ez garantálja, hogy csak a statikus Instance metódushíváson keresztül lehessen példányt létrehozni.
Kód (C#):  
Kód (C#):