4. gyakorlat¶
A gyakorlat anyaga¶
Factory Method¶
- Cél: interfész definiálása egy objektum létrehozásához, de csak a származtatott osztályok döntik el a tényleges osztályt
- Alkalmazhatóság:
- egy osztály nem tudhatja előre melyik osztályból példányosítson
- egy osztály a származtatottjaitól várja el, hogy meghatározzák a példányosított objektumot
Példa¶
A zenelejátszónknak playlisteket tudunk adni. Alapvetően sorban játszuk le a zenéket, de buli üzemmódban véletlenszerű lejátszást kell produkálnunk.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | |
Abstract Factory¶
- Cél: kapcsolódó vagy függő objektumcsaládok létrehozása a konkrét osztály megnevezése nélkül
- Alkalmazhatóság:
- rendszer független a termékek szerkezetétől, gyártásától
- több termékcsalád kell hogy legyen
- termékcsalád termékeit együtt kell használni
- A különböző családok termékei "nem illenek össze"
- termékek implementációja rejtett, interfész adott
Példa¶
- Egy autós játékot készítünk, melyben a játékos különböző korszakokban versenyezhet bizonyos típusú gépjárművekkel (motor, autó, teherautó).
-
A játék attól függően változtatja a kinézetét a járműnek, hogy épp melyik korszakban vagyunk.
-
Motor
1 2 3 | |
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 | |
- Autó
1 2 3 | |
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 | |
- Teherautó
1 2 3 | |
1 2 3 4 5 6 7 | |
1 2 3 4 5 6 7 | |
- Factory-k
1 2 3 4 5 6 7 8 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | |
- Kliens
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | |
Iterator¶
- Cél: tároló-objektum elemeinek sorozatos elérése a reprezentációtól függetlenül
- Alkalmazhatóság:
- egy tároló objektum tartalmát el akarjuk érni függetlenül a belső reprezentációtól
- egyidejűleg többszörös bejárásra is szükség van
- egységes interfészre van szükség különböző tároló szerkezetekhez
Példa¶
Van két típusú listánk - Feladatok listája (TodoList) - ArrayListben tárol - Feladatok gyűjteményének listája (ToDoListCollection) - HashMapben tárol - A két listát egységesen akarjuk bejárni - Az egységes bejárással kiíratjuk a feladatokat (ListPrinter)
1 2 3 4 5 6 7 8 9 | |
1 2 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 | |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | |
Feladatok¶
- Készítsünk egy kávézós alkalmazást. Legyen benne:
- absztrakt KávéHáz osztályunk:
- két kávéház: egyszerű és hipster
- két terméket készítenek: süti, kávé
- minden terméknek legyen neve, ára
- A hipster termékek ára a nevüktől függjön
- A mucsaröcsögei feketelevelű tuskókávé ára legyen több, mint az eszpresszóé
Utolsó frissítés:
2021-10-14 12:46:56