A gyári módszer tervezési minta Pythonban

Bevezetés

ebben a cikkben a Pythonban megvalósított gyári módszer tervezési mintájába merülünk.

a tervezési minták bevált megoldásokat határoznak meg a szoftverfejlesztés különböző visszatérő problémáira. Nem a tényleges kódot képviselik, hanem azt, hogy miként tudjuk megszervezni kódunkat az optimális eredmény érdekében.

a korlátozott erőforrások világában a tervezési minták segítenek a legtöbb eredmény elérésében a legkevesebb felhasznált erőforrással. Fontos megjegyezni azt is, hogy a tervezési minták nem vonatkoznak minden helyzetre, és elengedhetetlen a probléma felmérése annak érdekében, hogy az adott forgatókönyvhöz a legjobb megközelítést válasszuk.

a tervezési minták néhány tág kategóriára oszthatók, bár főleg alkotói mintákra, szerkezeti mintákra és viselkedési mintákra.

a gyári módszer minta egy kreatív tervezési minta.

a gyári módszer tervezési minta

definíció

a gyári módszert az objektumorientált programozásban használják az objektumok létrehozásához szükséges gyári interfészek biztosítására. Ezek az interfészek meghatározzák az általános struktúrát, de nem inicializálják az objektumokat. Az inicializálás a specifikusabb alosztályokra marad.

a szülő osztály/interfész tartalmazza az összes szabványos és általános viselkedést, amely megosztható a különböző típusú alosztályok között. Az alosztály viszont felelős a szuperosztályon alapuló objektum meghatározásáért és példányosításáért.

motiváció

a gyári módszer tervezési mintájának fő motivációja a kód laza összekapcsolásának javítása egy absztrakt osztály létrehozásával, amelyet különböző típusú objektumok létrehozására használnak, amelyek közös tulajdonságokkal és funkcionalitással rendelkeznek.

ez nagyobb rugalmasságot és a kód újrafelhasználását eredményezi, mivel a megosztott funkciók nem lesznek újraírva, mivel ugyanattól az osztálytól örökölték őket. Ezt a tervezési mintát virtuális konstruktornak is nevezik.

a gyári metódus tervezési mintáját általában használják a könyvtárakban, lehetővé téve az ügyfelek számára, hogy kiválasszák, milyen alosztályt vagy objektumtípust hozzanak létre egy absztrakt osztályon keresztül.

egy gyári metódus információt kap egy szükséges objektumról, példányosítja azt, és visszaadja a megadott típusú objektumot. Ez alkalmazásunknak vagy könyvtárunknak egyetlen interakciós pontot ad más programokkal vagy kódrészletekkel, ezáltal beágyazva az objektum-létrehozási funkciókat.

gyári módszer megvalósítása

programunk egy könyvtár lesz, amelyet alakobjektumok kezelésére használnak a létrehozás és más műveletek, például a szín hozzáadása és az alakzat területének kiszámítása szempontjából.

a felhasználóknak képesnek kell lenniük arra, hogy könyvtárunkat új objektumok létrehozására használják. Kezdhetjük azzal, hogy egyedi alakzatokat hozunk létre, és kihasználjuk őket, ahogy van, de ez azt jelentené, hogy sok közös logikát kell átírni minden rendelkezésre álló alakra.

az ismétlés megoldásának első lépése egy olyan szülőalakosztály létrehozása lenne, amely olyan módszerekkel rendelkezik, mint a calculate_area() és a calculate_perimeter(), valamint olyan tulajdonságokkal, mint a méretek.

az adott alakobjektumok ezután örökölnek az alaposztályunkból. Egy alakzat létrehozásához meg kell határoznunk, hogy milyen alakzatra van szükség, és létre kell hoznunk az alosztályt.

kezdjük egy absztrakt osztály létrehozásával, amely egy általános alakot képvisel:

ez az összes alakzat alaposztálya. Menjünk előre, és hozzon létre több konkrét, konkrétabb formát:

eddig létrehoztunk egy absztrakt osztályt, és kibővítettük, hogy megfeleljen a könyvtárunkban elérhető különböző formáknak. A különböző alakobjektumok létrehozásához az ügyfeleknek ismerniük kell alakjaink nevét és részleteit, és külön kell végrehajtaniuk a létrehozást.

itt jön létre a gyári módszer.

a gyári módszer tervezési minta segít elvont a rendelkezésre álló alakzatokat a kliens, azaz az ügyfél nem kell tudni, hogy az összes rendelkezésre álló alakzatok, hanem csak létrehozni, amire szükségük van futás közben. Ez lehetővé teszi számunkra, hogy központosítsuk és beágyazzuk az objektum létrehozását.

ezt úgy érjük el, hogy létrehozunk egy ShapeFactory – et, amelyet az ügyfél bemenete alapján az adott alakosztályok létrehozására használunk:

ez a mi felületünk a létrehozáshoz. Nem a konkrét osztályok konstruktorait hívjuk, hanem a gyárat, és arra kérjük, hogy hozzon létre egy alakot.

a ShapeFactory úgy működik, hogy információt kap egy alakról, például egy névről és a szükséges méretekről. Gyári módszerünk create_shape() ezután a kívánt formájú kész objektumok létrehozására és visszaadására szolgál.

az ügyfélnek nem kell tudnia semmit az objektum létrehozásáról vagy sajátosságairól. A gyári objektum használatával minimális ismeretekkel hozhatnak létre objektumokat a működésükről:

ennek a kódnak a futtatása a következőt eredményezi:

vagy építhetünk egy másik alakot:

érdemes megjegyezni, hogy amellett, hogy a kliensnek nem kell sokat tudnia a létrehozási folyamatról – amikor egy objektumot szeretnénk példányosítani, nem hívjuk meg az osztály konstruktorát. Arra kérjük a gyárat, hogy ezt tegye meg nekünk a create_shape() funkciónak átadott információk alapján.

előnyök és hátrányok

előnyök

a gyári módszer tervezési mintájának egyik fő előnye, hogy kódunk lazán összekapcsolódik, mivel kódunk összetevőinek többsége nem ismeri ugyanazon kódbázis más összetevőit.

ez olyan kódot eredményez, amely könnyen érthető és tesztelhető, és több funkciót ad hozzá az egyes összetevőkhöz anélkül, hogy befolyásolná vagy megszakítaná a teljes programot.

a gyári módszer tervezési mintája segít fenntartani az egységes felelősség elvét, ahol az osztályok és objektumok kezelik a speciális funkciókat, ami jobb kódot eredményez.

hátrányok

több osztály létrehozása végül kevesebb olvashatóságot eredményez. Ha egy absztrakt gyárral (gyárak gyárával) kombinálják, a kód hamarosan bőbeszédűvé válik, bár karbantartható.

következtetés

összefoglalva, a gyári módszer tervezési mintája lehetővé teszi számunkra, hogy objektumokat hozzunk létre anélkül, hogy megadnánk az adott objektum létrehozásához szükséges pontos osztályt. Ez lehetővé teszi számunkra, hogy szétválasszuk a kódunkat, és javítsuk annak újrafelhasználhatóságát.

fontos megjegyezni, hogy mint minden más tervezési minta, csak speciális helyzetekre alkalmas, nem minden fejlesztési forgatókönyvre. A jelenlegi helyzet értékelése döntő fontosságú, mielőtt a gyári módszer tervezési mintájának megvalósítása mellett döntene a minta előnyeinek kihasználása érdekében.

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.