GeeksforGeeks

Factory metódus egy kreatív tervezési minta, amely lehetővé teszi, hogy egy felület vagy egy osztály hozzon létre egy objektumot, de hagyja, hogy az alosztályok eldöntsék, melyik osztályt vagy objektumot példányosítsák. A gyári módszerrel a legjobb módja van egy objektum létrehozásának. Itt az objektumok anélkül jönnek létre, hogy a logikát az ügyfél elé tárnák, az új típusú objektum létrehozásához pedig az ügyfél ugyanazt a közös felületet használja.

problémák, amelyekkel gyári módszer nélkül szembesülünk:

képzelje el, hogy saját startupja van, amely telekocsi szolgáltatást nyújt az ország különböző részein. Az alkalmazás kezdeti verziója csak a kétkerekű telekocsi szolgáltatást biztosítja, de az idő múlásával az alkalmazás népszerűvé válik, és most három-és négykerekű telekocsi is hozzáadásra kerül.
ez egy nagyszerű hír! de mi a helyzet az indítás szoftverfejlesztőivel. Meg kell változtatniuk az egész kódot, mert most a kód nagy része a kétkerekű osztályhoz kapcsolódik, és a fejlesztőknek módosítaniuk kell a teljes kódbázist.
miután elvégezte ezeket a változtatásokat, vagy a fejlesztők a rendetlen kóddal vagy a lemondó levéllel zárulnak.

factory-pattern-python

Localizer app

Diagrammatikus ábrázolása problémák használata nélkül gyári módszer

értsük meg a koncepció még egy példát, amely kapcsolódik a fordítások és lokalizáció a különböző nyelveken.
tegyük fel, hogy létrehoztunk egy alkalmazást, amelynek fő célja az egyik nyelv lefordítása a másikra, és jelenleg az alkalmazásunk csak 10 nyelven működik. Most az alkalmazásunk széles körben népszerűvé vált az emberek körében, de a kereslet hirtelen nőtt, hogy további 5 nyelvet tartalmazzon.
ez egy nagyszerű hír! csak a tulajdonos számára, nem a fejlesztők számára. Meg kell változtatniuk az egész kódot, mert most a kód nagy része csak a meglévő nyelvekkel párosul, ezért a fejlesztőknek módosítaniuk kell a teljes kódbázist, ami valóban nehéz feladat.

nézzük meg a probléma kódját, amellyel a gyári módszer használata nélkül szembesülhetünk.

Megjegyzés: A következő kód A gyári módszer használata nélkül íródik.

class FrenchLocalizer:
def __init__(self):
self.translations = {"car": "voiture", "bike": "bicyclette",
"cycle":"cyclette"}
def localize(self, message):
return self.translations.get(msg, msg)
class SpanishLocalizer:
def __init__(self):
self.translations = {"car": "coche", "bike": "bicicleta",
"cycle":"ciclo"}
def localize(self, msg):
return self.translations.get(msg, msg)
class EnglishLocalizer:
def localize(self, msg):
return msg
if __name__ == "__main__":
f = FrenchLocalizer()
e = EnglishLocalizer()
s = SpanishLocalizer()
message =
for msg in message:
print(f.localize(msg))
print(e.localize(msg))
print(s.localize(msg))



megoldás gyári módszerrel:

a megoldás az, hogy az egyenes objektumépítési hívásokat a speciális gyári módszerre hívja. Valójában nem lesz különbség az objektum létrehozásában, de a gyári módszeren belül hívják őket.

például: a Two_Wheeler, Three_Wheeler és Four_wheeler osztályoknak végre kell hajtaniuk a telekocsi felületet, amely deklarálja a ride nevű metódust. Minden osztály egyedileg hajtja végre ezt a módszert.

 python-factory-patter-solution

solution_factory_diagram

most értsük meg a gyári módszert egy példa segítségével:

class FrenchLocalizer:
def __init__(self):
self.translations = {"car": "voiture", "bike": "bicyclette",
"cycle":"cyclette"}
def localize(self, message):
return self.translations.get(msg, msg)
class SpanishLocalizer:
def __init__(self):
self.translations = {"car": "coche", "bike": "bicicleta",
"cycle":"ciclo"}
def localize(self, msg):
return self.translations.get(msg, msg)
class EnglishLocalizer:
def localize(self, msg):
return msg
def Factory(language ="English"):
localizers = {
"French": FrenchLocalizer,
"English": EnglishLocalizer,
"Spanish": SpanishLocalizer,
}
return localizers()
if __name__ == "__main__":
f = Factory("French")
e = Factory("English")
s = Factory("Spanish")
message =
for msg in message:
print(f.localize(msg))
print(e.localize(msg))
print(s.localize(msg))



Osztálydiagram a gyári módszerhez:

nézzük meg az osztálydiagramot, figyelembe véve az útmegosztás példáját.

 gyári minta-osztály

Gyár_pattern_class_diagrma

a gyári módszer használatának előnyei:

  1. könnyen hozzáadhatjuk az új típusú termékeket anélkül, hogy megzavarnánk a meglévő ügyfélkódot.
  2. Általánosságban elmondható, hogy a termékek és az alkotói osztályok és tárgyak közötti szoros kapcsolat elkerülhető.

a gyári módszer használatának hátrányai:

  1. a particluar concrete product objektum létrehozásához előfordulhat, hogy az ügyfélnek alosztályba kell sorolnia a creator osztályt.
  2. a végén hatalmas számú kis fájlokat, azaz, túlzsúfoltság a fájlokat.
  3. alkalmazhatóság :

    1. egy grafikus rendszerben a felhasználó bemenetétől függően különböző alakzatokat rajzolhat, például téglalapot, négyzetet, kört stb. De a könnyű mind a fejlesztők, valamint az ügyfél, tudjuk használni a gyári módszert, hogy hozzon létre a példány függően a felhasználó bemenet. Akkor nem kell megváltoztatnunk az ügyfélkódot egy új alakzat hozzáadásához.
    2. egy szállodai foglalási oldalon foglalhatunk helyet 1 szoba, 2 szoba, 3 szoba stb. Itt a felhasználó megadhatja a lefoglalni kívánt szobák számát. A gyári módszerrel létrehozhatunk egy gyári osztályt AnyRooms amely segít nekünk a példány létrehozásában a felhasználó bemenetétől függően. Ismét nem kell megváltoztatnunk az ügyfél kódját az új létesítmény hozzáadásához.

    további olvasás: gyári Minta C-ben++

cikk-címkék:

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

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

Previous post szelegilin transzdermális tapasz (Emsam) súlyos depressziós rendellenesség esetén
Next post 6 jelek a légkondicionáló kompresszor rossz