GeeksforGeeks

Tovární Metoda je Creational Design Vzor, který umožňuje rozhraní nebo třídy vytvořit objekt, ale ať podtřídy rozhodnout, která třída nebo objekt, který chcete vytvořit instanci. Pomocí tovární metody máme nejlepší způsoby, jak vytvořit objekt. Zde jsou objekty vytvářeny bez vystavení logiky klientovi a pro vytvoření nového typu objektu klient používá stejné společné rozhraní.

problémy, kterým čelíme bez tovární metody:

Představte si, že máte svůj vlastní startup, který poskytuje spolujízdu v různých částech země. Počáteční verze aplikace poskytuje pouze Dva-Kolář spolujízda, ale jak plyne čas, vaše aplikace se stává populární a nyní chcete přidat Tři a Čtyři-Kolář spolujízda také.
je to skvělá zpráva! ale co vývojáři softwaru vašeho spuštění. Musí změnit celý kód, protože nyní je většina kódu spojena s třídou dvoukolek a vývojáři musí provést změny v celé kódové základně.
po dokončení všech těchto změn vývojáři končí chaotickým kódem nebo rezignačním dopisem.

továrna-vzor-python

Localizer aplikace

Schematické znázornění Problémy bez pomocí Tovární Metody

Pojďme se pochopit koncept s ještě jeden příklad, který souvisí s překlady a lokalizace do různých jazyků.
Předpokládejme, že jsme vytvořili aplikaci, jejímž hlavním účelem je přeložit jeden jazyk do druhého a v současné době naše aplikace pracuje pouze s 10 jazyky. Nyní se naše aplikace stala mezi lidmi velmi populární, ale poptávka náhle vzrostla o dalších 5 jazyků.
je to skvělá zpráva! pouze pro majitele, nikoli pro vývojáře. Musí změnit celý kód, protože nyní je většina kódu spojena pouze s existujícími jazyky, a proto vývojáři musí provádět změny v celé kódové základně, což je opravdu obtížný úkol.

podívejme se na kód problému, kterému můžeme čelit bez použití tovární metody.

Poznámka: Následující kód je zapsán bez použití tovární metody.

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))



řešení tovární metodou:

jeho řešením je nahradit přímé volání konstrukce objektu voláním na speciální tovární metodu. Ve skutečnosti nebude žádný rozdíl ve vytváření objektů, ale jsou volány v rámci tovární metody.

například: naše třídy Two_Wheeler, Three_Wheeler a Four_wheeler by měly implementovat rozhraní ridesharing, které deklaruje metodu zvanou ride. Každá třída implementuje tuto metodu jedinečně.

python-factory-pleskání-řešení

solution_factory_diagram

Teď pojďme pochopit, tovární metoda, s pomocí příkladu:

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))



Diagram tříd pro Tovární Metoda:

Pojďme se podívat na diagram tříd vzhledem příklad sdílení jízda.

 factory-pattern-class

Factory_pattern_class_diagrma

Výhody použití tovární metody:

  1. můžeme snadno přidat nové typy produktů bez narušení stávajícího klientského kódu.
  2. obecně se vyhýbá těsnému spojení mezi produkty a třídami a objekty tvůrců.

Nevýhody pomocí Tovární metody:

  1. vytvořit particluar konkrétní produkt objektu, klient může mít sub-třídy tvůrce třídy.
  2. skončíte s obrovským množstvím malých souborů, tj.
  3. použitelnost :

    1. v grafickém systému může v závislosti na vstupu uživatele kreslit různé tvary, jako je obdélník, čtverec, kruh atd. Ale pro snadnost jak vývojářů, tak klienta, můžeme použít tovární metodu k vytvoření instance v závislosti na vstupu uživatele. Pak nemusíme měnit kód klienta pro přidání nového tvaru.
    2. v rezervačním místě hotelu si můžeme rezervovat slot pro 1 pokoj, 2 pokoje, 3 pokoje atd. Zde může uživatel zadat počet pokojů, které chce rezervovat. Pomocí tovární metody můžeme vytvořit tovární třídu AnyRooms, která nám pomůže vytvořit instanci v závislosti na vstupu uživatele. Opět nemusíme měnit kód klienta pro přidání nového zařízení.

    další čtení: tovární vzor V C++

značky článku:

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna.

Previous post Selegilin Transdermální Náplast (Emsam) Depresivní Porucha
Next post 6 znamení Kompresor klimatizace je špatný