Patrones de Dise帽o y Principios SOLID
Patrones de Dise帽o y Principios SOLID en Python
Principios SOLID
Principio de Responsabilidad 脷nica en Clases de Software
Refactorizaci贸n de C贸digo: Principios SOLID en Procesadores de Pago
Refactorizaci贸n: Aplicando el Principio de Responsabilidad 脷nica
Principio Open-Closed aplicado en Python
Aplicaci贸n del Principio Abierto Cerrado en Python con Pydantic
Principio de Sustituci贸n de Liskov en Dise帽o de Software
Implementaci贸n del Principio Liskov en Python: Protocolos vs Clases Abstractas
Segregaci贸n de Interfaces en Desarrollo de Software
Implementaci贸n del Principio de Segregaci贸n de Interfaces
Principio de Inversi贸n de Dependencias en C#
Principio de Inversi贸n de Dependencias en Python
Reestructuraci贸n del proyecto
Reestructuraci贸n de C贸digo con M贸dulos en Python
Patrones de Dise帽o
Patrones de Dise帽o: Creaci贸n y Uso Pr谩ctico en Software
Uso del Patr贸n Strategy en Procesamiento de Pagos
Implementaci贸n del patr贸n estrategia en un procesador de pagos Python
Patr贸n Factory Pattern: Creaci贸n de Objetos en Python
Patr贸n Factory en Procesadores de Pago con Python
Patr贸n Decorador: A帽adir Funcionalidad sin Modificar Estructura
Patr贸n Decorador en Procesamiento de Pagos con Python
Patr贸n Builder: Separaci贸n de Construcci贸n en Clases Complejas
Construcci贸n de Servicio de Pagos con Builder Pattern Python
Patr贸n Observer: Gesti贸n de Eventos y Notificaciones en Java
Notificaciones en Sistemas de Pago: Implementando el Patr贸n Observer
Patr贸n Chain of Responsibility en Sistemas de Pago
Patr贸n Chain of Responsibility en Python: Validaci贸n de Pagos
Principios SOLID y Patrones de Dise帽o en Procesadores de Pago
No tienes acceso a esta clase
隆Contin煤a aprendiendo! 脷nete y comienza a potenciar tu carrera
El principio de abierto-cerrado promueve la creaci贸n de c贸digo que permita extender funcionalidades sin modificar el comportamiento original. A continuaci贸n, veremos c贸mo se puede aplicar este principio en el contexto de un procesador de pagos que debe a帽adir nuevas pasarelas sin cambiar el c贸digo existente.
La clave para implementar el principio abierto-cerrado en un sistema de pagos es dise帽ar el c贸digo de manera que pueda admitir nuevas pasarelas sin modificar la estructura existente. Esto se logra utilizando clases abstractas o interfaces que act煤an como intermediarios. As铆, los procesadores de pagos espec铆ficos, como Stripe, pueden heredar de estas clases abstractas y a帽adir su propia l贸gica sin afectar el c贸digo original.
Para incorporar una nueva pasarela de pagos en este caso:
Pydantic permite definir modelos de datos que facilitan la validaci贸n y tipado. Por ejemplo, el modelo CustomerData
contiene atributos como name
(nombre del cliente) y contact_info
(informaci贸n de contacto), que incluye campos opcionales como tel茅fono o correo electr贸nico. Esto hace que la manipulaci贸n de datos sea m谩s clara y segura.
Primero, se define una clase abstracta que representar谩 un procesador de pagos. Esta clase no contiene l贸gica interna, sino que se utiliza para definir la firma del m茅todo principal, processTransaction
. Los procesadores de pagos como Stripe implementan esta clase abstracta, heredando su forma y a帽adiendo la l贸gica espec铆fica para procesar las transacciones.
PaymentProcessor
que incluye el m茅todo processTransaction
.Se sigui贸 una estrategia similar para las notificaciones. Al igual que con los procesadores de pagos, se cre贸 una clase abstracta Notifier
que define la firma del m茅todo SendConfirmation
. Esto permite crear diferentes implementaciones, como un notificador por correo electr贸nico o un notificador por SMS, sin afectar la estructura del c贸digo original.
EmailNotifier
y un SMSNotifier
, ambos heredando de la clase abstracta Notifier
.Al final, el servicio de pagos se extendi贸 para que permitiera enviar notificaciones v铆a SMS sin cambiar su base de c贸digo. Esto se logr贸 creando una nueva clase SMSNotifier
que tambi茅n hereda de Notifier
. El c贸digo puede cambiar entre el env铆o de correos o mensajes de texto con solo ajustar la implementaci贸n del servicio, cumpliendo as铆 con el principio abierto-cerrado.
Aportes 13
Preguntas 4
驴Quieres ver m谩s aportes, preguntas y respuestas de la comunidad?