Patrón de fábrica en Python
- Implementar el método de fábrica en Python
- Ventajas del Método Factory en Python
- Desventajas del método 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 elpolimorfismo
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.
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