Factory Pattern: centralizar creación de objetos
Clase 17 de 27 • Curso de Patrones de Diseño y SOLID en Python
Contenido del curso
Principios SOLID
- 2

Principio de responsabilidad única en SOLID
05:59 min - 3

Refactorizando código Python con principios SOLID
11:14 min - 4

Cómo aplicar SRP en un procesador de pagos con Stripe
25:19 min - 5

Open Closed Principle: extensión sin modificación
02:39 min - 6

Cómo usar clases abstractas en Python
14:46 min - 7

Principio de Liskov en S.O.L.I.D.
03:18 min - 8

Principio de sustitución de Liskov en Python
06:38 min - 9

Interface Segregation: cuándo separar contratos
02:33 min - 10

Segregación de interfaces en procesadores de pagos
09:05 min - 11

Principio de inversión de dependencias explicado
04:13 min - 12

Principio de inversión de dependencias: servicio de pagos flexible
05:56 min
Reestructuración del proyecto
Patrones de Diseño
- 14

Qué son los patrones de diseño: definición y categorías
03:54 min - 15

Strategy Pattern con Python y setprocessor
01:55 min - 16

Strategy Pattern para pagos en Python
10:58 min - 17

Factory Pattern: centralizar creación de objetos
Viendo ahora - 18

Patrón Factory para procesar pagos con match
11:06 min - 19

Patrón Decorator en 5 pasos para funcionalidad dinámica
03:06 min - 20

Patrón decorador en servicios de pagos
12:57 min - 21

Builder Pattern: construcción paso a paso
01:28 min - 22

Builder pattern para servicios de pagos
18:55 min - 23

Observer Pattern en sistemas de eventos
01:48 min - 24

Observer en sistemas de pagos con Python
11:11 min - 25

Chain of Responsibility para validar pagos
02:04 min - 26

Chain of Responsibility en servicios de pagos
16:27 min - 27

Arquitectura robusta para procesadores de pago
03:19 min
Crear sin acoplarte a clases concretas es posible con el patrón creacional Factory Pattern. Aquí verás cómo centralizar la lógica de instanciación, apoyarte en interfaces, abstracciones o protocolos en Python, y elegir el objeto adecuado en cada caso de uso para ganar flexibilidad, escalabilidad y desacoplamiento.
¿Qué es el factory pattern y por qué usarlo?
El Factory Pattern crea objetos sin especificar la clase concreta. En lugar de eso, se apoya en interfaces o abstracciones para devolver instancias válidas según un parámetro de tipo (por ejemplo, un string). Así, encapsula la lógica de creación y ofrece una interfaz común para construir objetos.
- Centraliza decisiones de creación en una sola clase factory.
- Reduce acoplamiento: el código cliente no conoce clases concretas.
- Facilita extensibilidad: integrar un nuevo procesador solo requiere ampliar la factory.
- Mantiene consistencia: una única forma de crear instancias en todo el sistema.
¿Cuándo aplicarlo para crear objetos?
Úsalo cuando múltiples clases comparten una interfaz común y necesitas decidir cuál instanciar según el contexto. También resulta clave cuando la creación requiere múltiples decisiones (validaciones, parámetros, tipos), haciendo que sea conveniente encapsular esa complejidad.
¿Cómo se relaciona con el patrón strategy?
El patrón Strategy define múltiples estrategias, clases o funciones que resuelven el mismo problema con distintas soluciones. La Factory selecciona la estrategia correcta para el caso de uso adecuado, delegando la elección de la implementación concreta.
¿Qué problemas resuelve al escalar el sistema?
Cuando necesitas integrar un tercer procesador u otro nuevo, la lógica está centralizada en la factory. No cambias el código cliente; solo extiendes la factory para soportar el nuevo tipo.
¿Cómo implementarlo con una factory y un servicio de pagos?
Imagina un diagrama con una clase de alto nivel, PaymentService, que depende de PaymentFactory. La factory expone un método, getProcessor, que elige el procesador según un tipo (string) y devuelve la instancia correcta. De este modo, cualquier parte del código puede solicitar instancias a la factory para procesar pagos sin conocer detalles de creación.
¿Qué responsabilidades tienen paymentservice y paymentfactory?
- PaymentService: orquesta el proceso de pago y delega la elección del procesador a la factory.
- PaymentFactory: contiene la lógica de decisión y el método getProcessor que devuelve el procesador correcto según el tipo.
¿Qué pasos seguir para aplicarlo?
- Crear una clase Factory con un método que instancia y devuelve objetos basados en parámetros.
- Encapsular la lógica de selección dentro de la factory (por ejemplo, por tipo).
- Usar la factory en el código cliente para obtener instancias y mantener el desacoplamiento.
- Extender la factory al integrar nuevos procesadores o features, sin modificar el cliente.
¿Has usado el Factory Pattern en tus proyectos? Cuéntame en comentarios cómo lo aplicaste y qué beneficios te dio.