Gyári módszer tervezési mintája
Intent
- Adjon meg egy felületet egy objektum létrehozásához, de hagyja, hogy az alosztályok döntsék el, melyik osztály példányos. A gyári módszer lehetővé teszi az osztály definerstantizálását az alosztályokba.
- “Virtuális” konstruktor meghatározása.
- A
new
operátor károsnak tartja.
Probléma
A keretrendszernek szabványosítania kell az építészeti modellt egy sor alkalmazásra, de lehetővé kell tennie az egyes alkalmazások számára, hogy meghatározzák saját tartományuk objektumait, és biztosítsák azok példányosítását.
Megbeszélés
A gyári módszer az objektumok létrehozása, mivel a Sablon módszer egy algoritmust hajt végre. A szuperosztály meghatározza az összes szokásos és általános viselkedést (tiszta virtuális “helyőrzőket” használva a létrehozási lépésekhez), majd a létrehozás részleteit az ügyfél által szállított alosztályokra delegálja.
A Factory Method a dizájnt testreszabhatóbbá és csak egy kicsit bonyolultabb. Más tervezési minták új osztályokat igényelnek, míg a Factory Method csak új műveletet igényel.
Az emberek gyakran a Factory Method-ot használják az objektumok létrehozásának szokásos módszereként; de nem szükséges, ha: az az osztály, amelyik példányt soha változások, vagy a példányosítás egy olyan műveletben történik, amelyet az alosztályok könnyen felülírhatnak (például az inicializálási művelet).
A Factory Method hasonló az Abstract Factory-hez, de a hangsúlycsaládok nélkül.
Factory Methods egy építészeti keretrendszer rutinszerűen meghatározza, majd a keretrendszer felhasználója hajtja végre.
Struktúra
A Factory Method megvalósítása, amelyet a lenti Négyek bandájában tárgyalunk, nagyrészt átfedésben van hogy az Absztrakt Gyár. Ebből a szempontból az ebben a fejezetben bemutatott előadás az azóta népszerűvé vált megközelítésre összpontosít.
A gyár egyre népszerűbb meghatározása A metódus: egy osztály static
metódusa, amely az adott osztály objektumát adja vissza. De egy konstruktortól eltérően a tényleges objektum, amelyet visszaad, egy alosztály példánya lehet. Unlikea konstruktor, egy Lehetséges, hogy a meglévő objektum újrafelhasználásra kerül egy létrehozott új objektum helyett. A konstruktortól eltérően a gyári metódusok eltérő és leíróbb nevekkel rendelkezhetnek (pl. >
Az ügyfél teljesen leválasztva a származtatott osztályok implementációjának részleteiről. Most már lehetséges a polimorf létrehozása.
Példa
A gyári módszer meghatározza az interfészt az objektumok létrehozásához, de az alosztályoknak eldönthetik, mely osztályokat kell példázniuk. ez minta. A műanyag játékok gyártói feldolgozzák a műanyag öntőport, és a kívánt formájú formákba fecskendezik be a műanyagot. A játék osztályát (autó, akciófigura stb.) A penész határozza meg.
Ellenőrző lista
- Ha öröklési hierarchiája van, amely polimorfizmust gyakorol, fontolja meg egy polimorf létrehozási képesség hozzáadását egy
static
gyári módszer definiálásával az alaposztályban. - Tervezze meg az argumentumokat a gyári módszer szerint. Milyen tulajdonságok vagy tulajdonságok szükségesek és elegendők a helyes levezetett osztály azonosításához a megjelenítéshez?
- Fontolja meg egy olyan belső “objektumkészlet” megtervezését, amely lehetővé teszi az objektumok újrafelhasználását a semmiből való létrehozás helyett.
- Fontolja meg az összes kivitelező elkészítése
private
vagyprotected
.
ökölszabályok
- Az absztrakt Factory osztályokat gyakran Factory Methods-szal valósítják meg, de prototípus segítségével is megvalósíthatók.
- A Factory Method-okat általában a Template Methods-ban hívják meg.
- Factory Method: létrehozás öröklés útján . Prototípus: létrehozás delegálás útján.
- Gyakran a tervek a gyári módszer használatával indulnak (kevésbé bonyolult, testreszabható, alosztályok szaporodnak), és az AbstractFactory, a Prototype vagy a Builder (rugalmasabb, összetettebb) felé fejlődnek, ahogy a tervező felfedezi, hol több rugalmasságra van szükség.
- A prototípushoz nincs szükség alosztályozásra, de anicializálási műveletre van szükség. A gyári módszer alosztályozást igényel, de az inicializálás nem szükséges.
- A gyári módszer előnye: hogy ugyanazt az anyagot többször is vissza tudja adni, vagy egy alosztályt adhat vissza, nem pedig az adott típusú objektumot.
- Egyes Factory Method szószólók javasolják, hogy nyelvtervezésként (vagy ennek hiányában, stílus kérdésként) ) abszolút minden kivitelezőnek magán- vagy védettnek kell lennie. Senkinek sem az a dolga, hogy egy osztály új objektumot állítson elő, vagy újrahasznosítson egy régit.
- A
new
operátor károsnak ítélte meg. Különbség van egy objektum kérése és létrehozása között. Aznew
operátor mindig létrehoz egy objektumot, és nem zárja be az objektum létrehozását.A gyári módszer kikényszeríti a beágyazást, és lehetővé teszi egy objektum kérését anélkül, hogy elválaszthatatlanul összekapcsolódna a létrehozás aktussal.
Támogassa ingyenes weboldalunkat és birtokolja az e-könyvet!
- 22 tervezési minta és 8 alapos elmagyarázás
- 406 jól felépített, könnyen olvasható, zsargonmentes oldal
- 228 világos és hasznos illusztrációk és ábrák
- Archívum 4 nyelvű kódpéldákkal
- Minden támogatott eszköz: EPUB / MOBI / PDF formátum
További információ …