Fabrikmuster in Python

Fariba Laiq 21 Juni 2023
  1. Implementieren Sie die Factory-Methode in Python
  2. Vorteile der Factory-Methode in Python
  3. Nachteile der Factory-Methode in Python
Fabrikmuster in Python

Factory-Designmuster gehören zur Kategorie der schöpferischen Designmuster. Erstellungsentwurfsmuster bieten viele Techniken für die Objekterstellung, was zu mehr Wiederverwendbarkeit und Flexibilität des Codes führt.

Die Factory-Methode ist eine Methode zum Erstellen von Objekten ohne Angabe ihrer konkreten Klasse.

Es bietet Abstraktion und Polymorphismus in einer Weise, dass eine einzelne übergeordnete Klasse (abstrakte Klasse oder die Schnittstelle) die generische Struktur von Objekten definiert und die Unterklasse die vollständige Implementierung zum Instanziieren des Objekts bereitstellt.

Implementieren Sie die Factory-Methode in Python

Im folgenden Code ist abc ein Paket, das für Abstract Base Class steht, aus dem wir ABCMeta (um eine abstrakte Klasse zu deklarieren) und abstractstaticmethod (um eine abstrakte statische Methode zu deklarieren) importiert haben.

Wir haben eine generische abstrakte Basisklasse namens Person definiert, die eine abstrakte statische Methode person_type() hat.

Die konkret abgeleitete Klasse implementiert diese Methode. Dann haben wir zwei von Person abgeleitete Klassen namens Student und Teacher definiert. Beide Klassen implementieren je nach Bedarf die abstrakte statische Methode person_type().

Wir haben die Factory-Methode PersonFactory für die Erstellung der Objekte einer Person (Schüler oder Lehrer) zur Laufzeit gemäß der Eingabeauswahl des Benutzers verantwortlich erklärt.

Diese Klasse hat eine statische Methode, build_person(), die den Personentyp als Argument nimmt und das erforderliche Objekt mit ihren Namen konstruiert (Name des Schülers oder des Lehrers).

Beispielcode:

# Python 3.x
from abc import ABCMeta, abstractstaticmethod


class Person(metaclass=ABCMeta):
    @abstractstaticmethod
    def person_type():
        pass


class Student(Person):
    def __init__(self, name):
        self.name = name
        print("Student Created:", name)

    def person_type(self):
        print("Student")


class Teacher(Person):
    def __init__(self, name):
        self.name = name
        print("Teacher Created:", name)

    def person_type(self):
        print("Teacher")


class PersonFactory:
    @staticmethod
    def build_person(person_type):
        if person_type == "Student":
            name = input("Enter Student's name: ")
            return Student(name)
        if person_type == "Teacher":
            name = input("Enter Teacher's name: ")
            return Teacher(name)


if __name__ == "__main__":
    choice = input("Enter the Person type to create: ")
    obj = PersonFactory.build_person(choice)
    obj.person_type()

Ausgang:

#Python 3.x
Enter the Person type to create: Teacher
Enter Teacher's name: Jhon
Teacher Created: Jhon
Teacher

Vorteile der Factory-Methode in Python

  • Es fördert die lose Kopplung im Code.
  • Es ist einfach, den Code zu modifizieren, um neue Objekte mit leicht unterschiedlichen Eigenschaften zu instanziieren, ohne den aktuellen Code zu stören.
  • Es fördert Abstraktion und Polymorphismus im Code.

Nachteile der Factory-Methode in Python

  • Wir können es nur verwenden, wenn die Objekte aus derselben Kategorie mit leicht unterschiedlichen Merkmalen gehören.
  • Das Factory-Entwurfsmuster erhöht die Gesamtzahl der Klassen im Code.
  • Es reduziert die Lesbarkeit des Codes, da die Implementierung aufgrund von Abstraktion verborgen ist.
Fariba Laiq avatar Fariba Laiq avatar

I am Fariba Laiq from Pakistan. An android app developer, technical content writer, and coding instructor. Writing has always been one of my passions. I love to learn, implement and convey my knowledge to others.

LinkedIn