Gyári módszer minta
Gyár - egy minta létrehozásához tárgyak (létrehozási minta). Ez tervezési minta egy interfészt biztosít példányok létrehozása egy osztály. Abban az időben az örökösök, hogy melyik osztály példányosíthat.
Más szóval, a gyár küldött objektum létrehozása utódai szülő osztályban. Ez lehetővé teszi, hogy a programkód nem specifikus osztályokat és manipulálni absztrakt objektumok magasabb szinten.
Gyári tervezési minta nagyon gyakori. Vegyünk egy kis példa a Java.
Bevezetés: mindenféle követelmények a szoftver termékek folyamatosan növekszik. Végrehajtásáról szóló jelentések a kijuttatási művelet kell kialakítani különböző formái: XML, HTML, szöveg, stb Ez pontosan az a helyzet, amikor célszerű használni a gyári mintát.
Megoldás: Az osztály lesz AbstractWriter absztrakció rögzítésére valamilyen összefüggésben (akár XML-dokumentumot vagy egy szöveges fájl).
Ez az osztály lehet tetszőleges számú örökösök. Tekintsük ConcreteFileWriter és ConcreteXmlWriter alosztályok, hogy írjon egy szöveges fájlt, és a DOM dokumentum adott esetben:
Létrehozásához a kívánt objektumot, tudjuk írni a következő gyári:
A program szövege létrehozásakor jelentést kell átadni a függvény getWriter fájl objektum vagy DOM dokumentumot. Ennek eredményeként a módszer, megkapjuk a kívánt objektumot szükséges absztrakciós szinten.
A Gyári minta a következő esetekben:
- osztály nincs információ, hogy milyen típusú objektum van, hogy hozzon létre;
- osztály biztosítja a felelősséget létre az örökösök tárgyak;
- létre kell hozni egy tárgyat, attól függően, hogy a beérkező adatokat.
Egy későbbi cikkben fogjuk nézni a mintázat Abstract Factory.
Amennyire én értem a példában (például egy sor mintát külön köszönet) illusztrált parametrirozovannaya gyár t. Hogy. A gyári módszer paraméter alapján elfogadott, amelyek által létrehozott különleges alosztály AbstractWriter. Eközben a klasszikus gyár, ha jól értem, úgy viselkedik, kicsit másképpen: „class úgy van kialakítva, hogy a tárgyak, hogy megteremti adja alosztályok” (E. Gamma "Design Patterns). Azaz, nem kell több örökös FactoryMethod minden örökös AbstractWriter, és a választás az ügyfél, hogy milyen végrehajtási FactoryMethod választani. Ne jól értem?
Tény, a bemutatott példában ez nem Gyár eljárás, és az úgynevezett Egyszerű Factory (ez nem is egy tervezési minta, hanem egyszerűen egy széles körben használt technika). Danik helyesen írva, hogy az osztályba csak FactoryMethod örökösei, akik ténylegesen felülírja a gyári módszer. Első pillantásra úgy tűnhet, hogy nincs különbség, de a különbség óriási. Olvassa el a "Head First Design Patterns" vagy "Design Patterns For Dummies" és meg fogja érteni mindent.
Tévedsz. Ez még mindig a gyári módszer. Azt olvassuk a Erich Gamma: „paraméterezett gyári módszerekkel. Ez egy másik változata a minta, amely lehetővé teszi a gyári módszer, hogy különböző típusú termékek. Gyári metódus paraméter, amely meghatározza, hogy milyen objektumot kell létrehozni.
Minden objektum felhasználásával nyerik a gyár módszer, egy közös felületen termék. A példában az osztály Application dokumentumokat is támogatja a különböző típusú dokumentumok. Te át a módszer CreateDocument extra paraméter, amely meghatározza, hogy milyen dokumentumot kíván létrehozni "
Tehát mielőtt hogy kifejtsék véleményüket jó lenne, hogy vizsgálja meg egy részét a szőnyeg
Mi nem értünk, de ez más, mint a minta stratégia?
Én is okosabb. Antonin yorov különbség a gyári és a stratégia, hogy a stratégia lehetővé teszi, hogy dinamikusan határozza meg a megfelelő algoritmust (azaz lehet csatlakoztatni a megfelelő alosztály felület runtime) és a gyár mindezt algoritmusnak van egy módszer, amely visszaadja egy objektum.