GeeksforGeeks

Factory Method er et Kreationelt designmønster, der tillader en grænseflade eller en klasse at oprette et objekt, men lad underklasser bestemme, hvilken klasse eller objekt der skal instantieres. Ved hjælp af fabriksmetoden har vi de bedste måder at oprette et objekt på. Her oprettes objekter uden at udsætte logikken for klienten, og for at oprette den nye type af objektet bruger klienten den samme fælles grænseflade.

problemer, vi står over for uden Fabriksmetode:

Forestil dig, at du har din egen opstart, der giver ridesharing i de forskellige dele af landet. Den oprindelige version af appen giver kun tohjulede ridesharing, men som tiden går, bliver din app populær, og nu vil du også tilføje tre-og firehjulede ridesharing.
det er en god nyhed! men hvad med programmeludviklerne af din opstart. De er nødt til at ændre hele koden, for nu er størstedelen af koden kombineret med tohjulingsklassen, og udviklere skal foretage ændringer i hele kodebasen.
efter at have gjort med alle disse ændringer, slutter udviklerne enten med den rodede kode eller med fratrædelsesbrevet.

fabriksmønster-python

lokaliseringsapp

diagrammatisk repræsentation af problemer uden brug af Fabriksmetode

lad os forstå konceptet med endnu et eksempel, der er relateret til oversættelser og lokalisering af de forskellige sprog.
Antag, at vi har oprettet en app, hvis hovedformål er at oversætte et sprog til et andet, og i øjeblikket fungerer vores app kun med 10 sprog. Nu er vores app blevet meget populær blandt mennesker, men efterspørgslen er pludselig vokset til at omfatte 5 flere sprog.
det er en god nyhed! kun for ejeren ikke for udviklerne. De er nødt til at ændre hele koden, for nu er størstedelen af koden kun kombineret med de eksisterende sprog, og det er derfor, udviklere skal foretage ændringer i hele kodebasen, hvilket virkelig er en vanskelig opgave at gøre.

lad os se på koden for det problem, som vi måske står over for uden at bruge fabriksmetoden.

Bemærk: Følgende kode er skrevet uden brug af fabriksmetoden.

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øsning efter Fabriksmetode:

dens løsning er at erstatte de lige frem objektkonstruktionsopkald med opkald til den specielle fabriksmetode. Faktisk vil der ikke være nogen forskel i objektoprettelsen, men de kaldes inden for fabriksmetoden.

for eksempel: vores tohjul, Trehjul og Firehjulsklasser skal implementere ridesharing-grænsefladen, som vil erklære en metode kaldet ride. Hver klasse implementerer denne metode unikt.

python-factory-patter-solution

solution_factory_diagram

lad os nu forstå fabriksmetoden ved hjælp af et eksempel:

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



klassediagram til Fabriksmetode:

lad os se på klassediagrammet i betragtning af eksemplet med ridedeling.

fabriksmønster-klasse

Factory_pattern_class_diagrma

fordele ved at bruge Fabriksmetode:

  1. vi kan nemt tilføje de nye typer produkter uden at forstyrre den eksisterende klientkode.
  2. generelt undgås tæt kobling mellem produkterne og skaberklasserne og objekterne.

ulemper ved brug af Fabriksmetode:

  1. for at oprette en particluar beton produkt objekt, klient måske nødt til at sub-klasse skaberen klasse.
  2. du ender med et stort antal små filer, dvs.cluttering af filerne.
  3. anvendelighed :

    1. i et grafiksystem kan det, afhængigt af brugerens input, tegne forskellige former som rektangel, firkant, cirkel osv. Men for at lette både udviklere og klienten kan vi bruge fabriksmetoden til at oprette forekomsten afhængigt af brugerens input. Så behøver vi ikke ændre klientkoden for at tilføje en ny form.
    2. på et hotelreservationssted kan vi bestille en plads til 1 værelse, 2 værelser, 3 værelser mv. Her kan brugeren indtaste antallet af værelser, han ønsker at bestille. Ved hjælp af fabriksmetoden kan vi oprette en Fabriksklasse AnyRooms, som vil hjælpe os med at oprette forekomsten afhængigt af brugerens input. Igen behøver vi ikke at ændre klientens kode for at tilføje den nye facilitet.

    Læs mere: Fabriksmønster i C++

artikel Tags:

Skriv et svar

Din e-mailadresse vil ikke blive publiceret.

Previous post selegilin transdermalt plaster (Emsam) til Major depressiv lidelse
Next post 6 Tegn dit klimaanlæg kompressor er dårlig