GeeksforGeeks

Die Factory-Methode ist ein gestalterisches Entwurfsmuster, mit dem eine Schnittstelle oder eine Klasse ein Objekt erstellen kann, aber Unterklassen entscheiden können, welche Klasse oder welches Objekt instanziiert werden soll. Mit der Factory-Methode haben wir die besten Möglichkeiten, ein Objekt zu erstellen. Hier werden Objekte erstellt, ohne dem Client die Logik zur Verfügung zu stellen, und zum Erstellen des neuen Objekttyps verwendet der Client dieselbe gemeinsame Schnittstelle.

Probleme, mit denen wir ohne Factory-Methode konfrontiert sind:

Stellen Sie sich vor, Sie haben Ihr eigenes Startup, das Mitfahrgelegenheiten in den verschiedenen Teilen des Landes anbietet. Die erste Version der App bietet nur die Zweirad-Mitfahrgelegenheit, aber im Laufe der Zeit wird Ihre App populär und jetzt möchten Sie auch Drei- und Vierrad-Mitfahrgelegenheiten hinzufügen.
Es ist eine großartige Neuigkeit! aber was ist mit den Softwareentwicklern Ihres Startups. Sie müssen den gesamten Code ändern, da jetzt der größte Teil des Codes mit der Zweiradklasse gekoppelt ist und Entwickler Änderungen an der gesamten Codebasis vornehmen müssen.
Nachdem alle diese Änderungen vorgenommen wurden, enden die Entwickler entweder mit dem unordentlichen Code oder mit dem Rücktrittsschreiben.

 factory-pattern-python

Localizer App

Schematische Darstellung von Problemen ohne Verwendung der Factory-Methode

Lassen Sie uns das Konzept anhand eines weiteren Beispiels verstehen, das sich auf die Übersetzungen und Lokalisierung der verschiedenen Sprachen bezieht.
Angenommen, wir haben eine App erstellt, deren Hauptzweck darin besteht, eine Sprache in eine andere zu übersetzen, und derzeit funktioniert unsere App nur mit 10 Sprachen. Jetzt ist unsere App bei Menschen sehr beliebt geworden, aber die Nachfrage ist plötzlich auf 5 weitere Sprachen angewachsen.
Es ist eine großartige Neuigkeit! nur für den Eigentümer, nicht für die Entwickler. Sie müssen den gesamten Code ändern, da jetzt der größte Teil des Codes nur noch mit den vorhandenen Sprachen gekoppelt ist, und deshalb müssen Entwickler Änderungen an der gesamten Codebasis vornehmen, was wirklich eine schwierige Aufgabe ist.

Schauen wir uns den Code für das Problem an, mit dem wir möglicherweise konfrontiert sind, ohne die Factory-Methode zu verwenden.

Hinweis: Der folgende Code wird ohne Verwendung der Factory-Methode geschrieben.

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



Lösung nach Factory-Methode:

Die Lösung besteht darin, die einfachen Objektkonstruktionsaufrufe durch Aufrufe der speziellen Factory-Methode zu ersetzen. Tatsächlich gibt es keinen Unterschied in der Objekterstellung, aber sie werden innerhalb der Factory-Methode aufgerufen.

Beispiel: Unsere Klassen Two_Wheeler, Three_Wheeler und Four_wheeler sollten die Ridesharing-Schnittstelle implementieren, die eine Methode namens ride deklariert. Jede Klasse implementiert diese Methode eindeutig.

python-factory-patter-solution

solution_factory_diagram

Lassen Sie uns nun die Factory-Methode anhand eines Beispiels verstehen:

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



Klassendiagramm für Factory-Methode:

Schauen wir uns das Klassendiagramm am Beispiel der Mitfahrgelegenheit an.

factory-pattern-class

Factory_pattern_class_diagrma

Vorteile der Verwendung der Factory-Methode:

  1. Wir können die neuen Produkttypen problemlos hinzufügen, ohne den vorhandenen Client-Code zu stören.
  2. Generell wird eine enge Kopplung zwischen den Produkten und den Erstellerklassen und -objekten vermieden.

Nachteile der Verwendung der Factory-Methode:

  1. Um ein bestimmtes konkretes Produktobjekt zu erstellen, muss der Client möglicherweise die Creator-Klasse unterordnen.
  2. Sie erhalten eine große Anzahl kleiner Dateien, dh ein Durcheinander der Dateien.
  3. Anwendbarkeit :

    1. In einem Grafiksystem kann es je nach Eingabe des Benutzers verschiedene Formen wie Rechteck, Quadrat, Kreis usw. zeichnen. Zur Erleichterung sowohl der Entwickler als auch des Clients können wir jedoch die Factory-Methode verwenden, um die Instanz abhängig von den Benutzereingaben zu erstellen. Dann müssen wir den Client-Code nicht ändern, um eine neue Form hinzuzufügen.
    2. Auf einer Hotelbuchungsseite können wir einen Platz für 1 Zimmer, 2 Zimmer, 3 Zimmer usw. buchen. Hier kann der Benutzer die Anzahl der Zimmer eingeben, die er buchen möchte. Mit der Factory-Methode können wir jederzeit eine Factory-Klasse erstellen, die uns hilft, die Instanz abhängig von den Benutzereingaben zu erstellen. Auch hier müssen wir den Code des Kunden nicht ändern, um die neue Einrichtung hinzuzufügen.

    Lesen Sie weiter: Factory-Muster in C++

Artikelnummer: 6608

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.

Previous post Selegilin Transdermales Pflaster (Emsam) für Major Depression
Next post 6 Zeichen, dass der Kompressor Ihrer Klimaanlage schlecht ist