Sei sulla pagina 1di 4

El escenario:

Para este ejemplo imaginemos que nuestro cliente tiene un portal web desde el cual puede brindar ciertos
servicios a sus clientes, sin embargo, nuestro cliente nos ha pedido que agreguemos una nueva
funcionalidad que le permita hacer pagos en línea. El pago en línea no sólo implica hacer el cobro, si no
que tenemos que afectar a varios subsistemas para que el pago sea aplicado correctamente y el cliente sea
notificado que el pago se realizó exitosamente.

Nuestro cliente ya cuenta con algunos subsistemas con los cuales será necesario interactuar, los
subsistemas que tiene el cliente son:

• BankSystem: Sistema de bancos que le permite realizar los cargos a los clientes por medio de los
datos de la tarjeta de crédito o débito.
• BillingSystem: Sistema de facturación, este sistema tiene el detalle del saldo del cliente.
• CRMSystem: Sistema en donde gestiona la información del cliente.
• EmailSystem: Componente de software que utiliza para mandar correos electrónicos a sus clientes.

Cuando el cliente introduzca los datos de su tarjeta y confirme el pago, el sistema deberá hacer lo
siguiente:

1. Ir al sistema de Bancos y aplicar el pago.


a. El sistema valida que los bines (Prefijo del número de tarjeta que identifica) sean válidos.
2. Ir al sistema de facturación y aplicar el pago realizado.
a. El sistema validó que el monto de pago no sea mayor al saldo del cliente.
3. Ir al sistema CRM y afectar el status del cliente cuando se realice un pago.
a. El status del cliente cambia a Activo únicamente cuando el saldo, después del pago, es menor o
igual a 50$.
4. Ir al modulo de envio de correos electrónicos y notificar al cliente del pago realizado.

Bins: Corresponde a los primeros dígitos de una tarjeta que identifica de qué proveedor es (AMEX,
VISA, MASTERCARD), así como el banco al que pertenece y si es de crédito o débito.

Otras reglas que se deben de tener en cuenta son que el cliente debe de existir para aplicar el pago y que
el status de éste no sea ‘Baja’, ya que indica que este cliente ya canceló el servicio.

Un esquema que podríamos ver es el siguiente:


Ilustración 84: Escenario de comunicación de punto a punto.
El escenario que estamos viendo en la imagen es más común de lo que puedan imaginar, sin embargo, en
la mayoría de los casos es un pésimo diseño, ya que el portal web debe de conocer la implementación de
todos los subsistemas, debe conocer las operaciones a ejecutar y saber el orden en el que tienen que
hacerlo. También tiene el riesgo de que si la interface de algunos de los subsistemas cambia, afectará
directamente al portal web, teniendo que modificar la aplicación, recompilar y subir el cambio.

Es por esta razón que nos ha solicitado diseñar una solución que le permita realizar el pago desde el portal
web de una manera más segura y fácil de implementar.
La solución:

Ya vimos los requerimientos y ya sabemos que una solución de punto a punto no


es recomendable en la mayoría de los casos, por eso la mejor estrategia será
implementar el patrón Facade. Este patrón nos permitirá exponer una interface de
alto nivel que sólo le solicite al portal web la información minina para realizar
todos los pasos que vimos en el escenario.

Ilustración 85: Implementación del pago con el patrón Facade.


Si vemos la imagen podemos apreciar una gran diferencia. En lugar de que nuestra aplicación se
encuentre en medio de todos los subsistemas interactuando con todos, mejor colocamos la aplicación
en un extremo y se agrega una fachada que expondrá la funcionalidad para realizar todos los pasos del
pago, de esta forma no es necesario saber qué pasos implica realizar un pago y cualquier cambio en
las interfaces de los subsistemas

Siguientes pasos:

Si nos damos cuenta con unos cuantos parámetros hemos logrado hacer todos los
pasos para aplicar un pago en varios subsistemas sin el funcionamiento interno de
cada uno de éstos. Además, es importante resaltar que si un paso extra es requerido
para aplicar el pago, sólo se tendría que mover la fachada sin afectar a la
aplicación.

Para fortalecer los conocimientos adquirIdos realizaremos los siguientes ejercicios:


• Integremos un nuevo subsistema llamado RewardSystem el cual dé
puntos a los clientes por sus compras, cada 100 pesos pagados le dará
al cliente 10 puntos electrónicos.
• Continuando con el punto anterior, modifiquemos la aplicación para que el
sistema, antes de realizar el cargo al banco, valide si la compra se puede
pagar con los puntos. Cada 10 puntos equivalen a 1$. Si los puntos alcanzan
a cubrir la compra en su totalidad se deberán usar y no realizar el cargo a la
tarjeta.

• Agreguemos un nuevo subsistema, el cual simule enviar un SMS al


celular del cliente cuando un pago se ha realizado.

Potrebbero piacerti anche