„Tervezési minták (Sznikák)” változatai közötti eltérés
Nincs szerkesztési összefoglaló |
Nincs szerkesztési összefoglaló |
||
| 19. sor: | 19. sor: | ||
* '''Command''' | * '''Command''' | ||
== 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 == | |||
'''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#): | ||