8.dia Minták a szoftverfejlesztésben Flashcards
(11 cards)
Mi a minta?
Újra és újra felbukkanó probléma és a hozzátartozó megoldás magja.
3 része:
környezet : Milyen helzetben fordul elő?
probléma : Az adott környezetben a negatív helyzet ami sokszor fennáll. -> Erő megoldáshoz vezető út követelményei, megszorításai.
megoldás : Erő egyensúlyozásával megoldjuk a problémát. Csak egy séma, és nem pontos terv.
Architekturális minták
Szoftverrendszerek alapvető szerkezeti felépítésre adnak mintát.
Előre definiált alrendszerek és a hozzájuk tartozó szabályok, irányelvek és köztük lévő kapcsolat segíti a felépítést.
A modell-nézet vezérlő (MVC) architekturális minta
Környezet: Rugalmas ember-gép felülettel rendelkező interaktív alkalmazások esetén.
Probléma: Felhasználói felületet gyakran kell változtatni.
-Erő:
- Ugyan olyan infókat máshogy megjeleníteni.
- UI-nak azonnal kell tükröznie hogy az adatokkal milyen művelet hajtódik végre.
- UI könnyen változtatható legyen akár futás közben is.
- Szabvány a “look and feel”-re
Megoldás: Három részre osztani az alkalmazást.
- Modell komponens : funkcionalitás és adatok
- Nézet komponens : megjelenítés
- Vezérlő komponens : Bemenet és ezt kérésként továbbítja a modellnek.
MVC lefőbb célok bővebben
Modell és nézet elválasztása:
- Ugyan azon adatok máshogyan megjeleníthetőek.
Viszont nem olyan fontos a vezérlő és a nézet elválasztása:
- Több vezérlő is lehet egy nézethez (szerkeszthető és nem szerkeszthető nézet)
- Gyakorlatban általában 1-1
Karakter rendszer példák:
- Java : Spring Framework, (JavaFX, egyébként nem az, de meg lehet vele valósítani.)
- Python : Django
Tervezési minták
Középszintűek, kisebb léptűek mint az architekturális minták.
Szoftverrendszerekre alapvetően nincs kihatással, viszont alrendszerek felépítésére igen.
Föggetlen nyelvtől és paradigmától.
Kapcsolódik a GoF-hez.
Tervezési minták osztályozása
Létrehozási minták : Objektumok létrehozása.
Szerkeztési minták : Hogyan alkotnak objektumok és osztályok nagyobb szerkezeteket.
Viselkedési minták : Felelősség elosztás és az objektumok és osztályok hatása egymásra.
Új kategória Konkurencia minták
Tervezési minták osztályozására példák
Létrehozási minták: elvont gyár, gyártó metódus, építő, egyke, objektumkészlet
Szerkeztési minták: díszítő, illesztő
Viselkedési minták: bejáró, megfigyelő, sablonfüggvény
Egyke (Létrehozási minták)
Cél: Egy osztályt csak egyszer lehessen példányosítani és ehez globális hozzáférést adni.
Indíték: Néha fontos, hogy csak egy példány legyen. Lehet túl nagy erőforrás igényű.
Alkalmazhatóság: Ügyfelek számára jól ismert elérési pontból elérhető pontosan egy példányra van szükség.
Javában megoldás:
-Privát konstruktor, publicus get metódus.
- Mohó inicializálás, szálbiztos (Deklaráció = inicializálás)
- Lusta inicializálás, szálbiztos (get meghívása -> inicializálás) (synchronized)
- Lusta inicializálás, szálbiztos, (nincs synchronized) (Becsomagoló osztály)
- Enum
Programozási idiómák / implementációs minták
Legalacsonyabb szintű minták, egy programozási nyelvre jellemző minta.
Egy adott nyelv eszközeivel hogyan valósítunk meg komponensek és kapcsolataik bizonyos vonakoztatásait.
Az equals(), hashCode() és clone() metódus felülírása Java-ban
Példák a diában…
Antiminták, a massza és spagetti kód antiminta
Problémára adott általános megoldás ami kifejezetten negatív hatású.
A massza : Egyetlen nagy osztály van a funkcionalitásért, a többi csak adatokat tárol.
Spagetti kód: Struktúrálatlan, OOP elveket nem betartó kód.