GeeksforGeeks

metoda fabryczna jest Kreacyjnym wzorcem projektowym, który pozwala interfejsowi lub klasie utworzyć obiekt, ale niech podklasy decydują, która klasa lub obiekt ma zostać utworzona. Korzystając z metody Fabrycznej, mamy najlepsze sposoby na utworzenie obiektu. Tutaj obiekty są tworzone bez wystawiania logiki na klienta, a do stworzenia nowego typu obiektu klient używa tego samego wspólnego interfejsu.

problemy, z którymi borykamy się bez metody Fabrycznej:

wyobraź sobie, że masz własny startup, który zapewnia współdzielenie przejazdów w różnych częściach kraju. Początkowa wersja aplikacji zapewnia tylko dwukołowy jeździectwo, ale w miarę upływu czasu, Twoja aplikacja staje się popularna i teraz chcesz dodać trzy i czterokołowy jeździectwo również.
to świetna wiadomość! ale co z programistami twojego startupu. Muszą zmienić cały kod, ponieważ teraz większość kodu jest sprzężona z klasą dwukołowców, a programiści muszą wprowadzić zmiany w całej bazie kodu.
po tych wszystkich zmianach albo deweloperzy kończą z brudnym kodem, albo z listem rezygnacji.

factory-pattern-python

aplikacja Localizer

schematyczne przedstawianie problemów bez użycia metody Fabrycznej

zrozummy koncepcję z jeszcze jednym przykładem, który jest związany z tłumaczeniami i lokalizacją różnych języków.
Załóżmy, że stworzyliśmy aplikację, której głównym celem jest tłumaczenie jednego języka na drugi i obecnie nasza aplikacja działa tylko w 10 językach. Teraz nasza aplikacja stała się bardzo popularna wśród ludzi, ale zapotrzebowanie nagle wzrosło do włączenia 5 Więcej języków.
to świetna wiadomość! tylko dla właściciela, nie dla deweloperów. Muszą zmienić cały kod, ponieważ teraz większość kodu jest połączona tylko z istniejącymi językami i dlatego programiści muszą wprowadzić zmiany w całej bazie kodu, co jest naprawdę trudnym zadaniem.

spójrzmy na kod problemu, z którym możemy się zmierzyć bez użycia metody fabrycznej.

Uwaga: Poniższy kod jest zapisywany bez użycia metody Fabrycznej.

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



rozwiązanie metodą fabryczną:

jego rozwiązaniem jest zastąpienie prostych wywołań konstrukcji obiektu wywołaniami do specjalnej metody fabrycznej. W rzeczywistości nie będzie różnicy w tworzeniu obiektów, ale są one wywoływane w metodzie fabrycznej.

na przykład: Nasze klasy Two_Wheeler, Three_Wheeler i Four_wheeler powinny implementować interfejs współdzielenia przejazdów, który deklaruje metodę o nazwie ride. Każda klasa zaimplementuje tę metodę w unikalny sposób.

python-factory-patter-solution

solution_factory_diagram

teraz pozwól nam zrozumieć metodę fabryczną za pomocą przykładu:

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 klas dla metody Fabrycznej:

spójrzmy na diagram klas biorąc pod uwagę przykład współdzielenia jazdy.

fabryka-wzór-Klasa

Factory_pattern_class_diagrma

zalety stosowania metody Fabrycznej:

  1. możemy łatwo dodać nowe typy produktów bez naruszania istniejącego kodu klienta.
  2. generalnie unika się ścisłego sprzężenia między produktami a klasami i obiektami twórców.

wady stosowania metody Fabrycznej:

  1. aby utworzyć konkretny konkretny obiekt produktu, Klient może być zmuszony do podklasy klasy creator.
  2. kończysz z ogromną liczbą małych plików, tj. bałaganem plików.
  3. :

    1. w systemie graficznym, w zależności od wejścia użytkownika, może rysować różne kształty, takie jak prostokąt, kwadrat, koło itp. Ale dla łatwości zarówno programistów, jak i klienta, możemy użyć metody fabrycznej do utworzenia instancji w zależności od danych wejściowych użytkownika. Wtedy nie musimy zmieniać kodu klienta, aby dodać nowy kształt.
    2. na stronie rezerwacyjnej hotelu można zarezerwować miejsce na 1 pokój, 2 pokoje, 3 pokoje itp. Tutaj użytkownik może wprowadzić liczbę pokoi, które chce zarezerwować. Korzystając z metody factory, możemy utworzyć klasę fabryczną AnyRooms, która pomoże nam stworzyć instancję w zależności od danych wejściowych użytkownika. Ponownie nie musimy zmieniać kodu klienta, aby dodać nowy obiekt.

    Czytaj dalej: wzór fabryczny w C++

Tagi artykułu:

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany.

Previous post Селегилиновый transdermalny (Emsam) do leczenia poważnych zaburzeń depresyjnych
Next post 6 oznak, że sprężarka Twojego klimatyzatora jest zła