Tartalom
Ebben a fejezetben néhány tervezési minta bemutatására kerül sor. Ahogyan már a bevezetőben megjegyeztük, a minták követése és alkalmazása segíthet a jobb programozóvá válásban. A szoftverfejlesztési életciklus minden elemét átszövik a minták, beszélhetünk elemzési, architekturális, tervezési, implementációs, de még tesztelési mintákról is. Ezen minták különféle absztrakciós szinten segítik az azt alkalmazó munkáját, azonban közös bennük, hogy valamilyen jól meghatározott cél érdekében jöttek létre, és javasolnak megoldást a felmerülő problémákra.
A tervezési minták olyan középszintű minták, amelyek a szoftver részletes tervezése során kerülnek alkalmazásra. Szemben az implementációs mintákkal, nem kötődnek egyetlen programozási nyelvhez sem, annál magasabb absztrakciós szinten tesznek javaslatot az objektumok létrehozása, szerkezetének kialakítása, és az objektumok közötti kommunikáció kialakítása során felmerülő változatos problémákra.
[GOF1994, GOF2004] a tervezési minták leírására az alábbi szerkezetet javasolja, ezáltal egységessé téve az egyes tervezési minták leírását:
4.1. táblázat - Tervezési minták leírására szolgáló sablon elemei
Minta attribútuma | Leírás |
---|---|
A minta neve és besorolása | A minta neve a minta lényegét közvetíti rövid formában. A jó név létfontosságú, mivel a tervezési szókincs részévé válik. A minta besorolását a későbbiekben tárgyalandó három alapvető kategória valamelyikébe végezzük. |
Cél | Rövid leírás, amely a következő kérdésekkel foglalkozik: Mit csinál az adott tervezési minta? Mi az értelme és a célja? Milyen sajátos tervezési problémára ad választ? |
Egyéb nevek | A minta más, jól ismert nevei, ha vannak ilyenek, illetve a minta angol neve. |
Feladat | Forgatókönyv, amely bemutatja a tervezési problémát és azt, hogy az osztályok és az objektumok hogyan oldják azt meg. A forgatókönyv segít a minta következő, elvontabb leírásának megértésében. |
Alkalmazhatóság | Melyek azok a helyzetek, ahol az adott tervezési minta alkalmazható? Melyek azok a rossz tervek, amelyek leváltását a minta megcélozza? Hogyan ismerhetők fel ezek? |
Szerkezet | A minta osztályainak grafikus szemléltetése. |
Résztvevők | Az osztályok, illetve objektumok, amelyek részt vesznek a tervezési mintákban, valamint azok feladatai. |
Együttműködés | Hogyan működnek együtt az objektumok, hogy végrehajtsák feladataikat? |
Következmények | Hogyan támogatja az adott minta a kívánt célokat? Mik a minta használatának előnyei és hátrányai? A rendszer mely szerkezeti elemeit változtathatjuk szabadon az adott mintát használva? |
Megvalósítás | Milyen buktatókra kell ügyelni, milyen módszereket érdemes használni a minta megvalósításakor? Vannak nyelvi sajátosságok? |
Példakód | Programkód-töredékek, amelyek illusztrálják, hogyan valósítható meg a minta valamely objektumorientált programozási nyelven. |
Ismert felhasználások | Valós rendszerekből vett példák a mintára. Legalább két példát szerepeltetünk, különböző területekről. |
Kapcsolódó minták | Mely tervezési minták kapcsolódnak szorosan az adott mintához? Mik a legfontosabb különbségek? Milyen más mintákkal együtt célszerű használni az adott mintát? |