Patrón de fábrica en Python

Fariba Laiq 21 junio 2023
  1. Implementar el método de fábrica en Python
  2. Ventajas del Método Factory en Python
  3. Desventajas del método de fábrica en Python
Patrón de fábrica en Python

El patrón de diseño de fábrica se encuentra en la categoría de patrón de diseño creacional. Los patrones de diseño creacional proporcionan muchas técnicas para la creación de objetos, lo que da como resultado una mayor reutilización y flexibilidad del código.

El método de fábrica es un método para crear objetos sin especificar su clase concreta.

Proporciona abstracción y polimorfismo de manera que una sola clase principal (clase abstracta o la interfaz) define la estructura genérica de los objetos, y la subclase proporciona la implementación completa para instanciar el objeto.

Implementar el método de fábrica en Python

En el siguiente código, abc es un paquete que significa Abstract Base Class desde el cual hemos importado ABCMeta (para declarar una clase abstracta) y abstractstaticmethod (para declarar un método estático abstracto).

Hemos definido una clase base abstracta genérica llamada Persona, que tiene un método estático abstracto tipo_persona().

La clase derivada concreta implementará este método. Luego hemos definido dos clases derivadas de Persona llamadas Estudiante y Profesor. Ambas clases implementan el método estático abstracto person_type() según sus necesidades.

Hemos declarado el Factory Method PersonFactory responsable de crear los objetos de una Persona (Estudiante o Profesor) en tiempo de ejecución de acuerdo con la elección de entrada del usuario.

Esta clase tiene un método estático, build_person(), que toma el tipo de persona como argumento y construye el objeto requerido con sus nombres (nombre del alumno o nombre del profesor).

Código de ejemplo:

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

Producción :

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

Ventajas del Método Factory en Python

  • Promueve el acoplamiento suelto en el código.
  • Es fácil modificar el código para instanciar nuevos objetos que tengan características ligeramente diferentes sin alterar el código actual.
  • Fomenta la abstracción y el polimorfismo en el código.

Desventajas del método de fábrica en Python

  • Solo podemos usarlo cuando los objetos pertenecen a la misma categoría y tienen características ligeramente diferentes.
  • El patrón de diseño de fábrica aumenta el número total de clases en el código.
  • Reduce la legibilidad del código porque la implementación queda oculta por abstracción.
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