Strategy_Pattern_in_UML
En el artículo anterior ya hemos visto la definición del Strategy Patern y como se aplica, ahora vamos a ver un ejemplo de la vida real, para eso vamos implementar los métodos de pago que podría tener nuestra tienda virtual.

Contexto

Nuestra pequeña tienda virtual permite que nuestros clientes paguen con tarjeta de crédito, pero como el negocio va creciendo tenemos que adaptarnos al entorno, así que tenemos que implementar otras formas adicionales de pagos como: deposito en cuenta, pago a través de teléfonos móviles, pago contra entrega, cheque, etc.

Cada método de pago tiene una forma distinta de implementarse, ya que cada uno requiere y maneja datos e información distinta, entonces debemos encapsular cada uno de ellos.

Para este ejemplo vamos a implementar el pago con tarjeta de crédito y con PayPal

UML

shoping_cart

Implementación

En primer lugar vamos a crear la interfaz de nuestra estrategia, en nuestro caso, la cantidad que se va pagar lo vamos a pasar como argumento.

Ahora tendremos que crear las estrategias concretas (algoritmos) para el pago mediante tarjeta de crédito y PayPal.

Ahora nuestras estrategias (algoritmos) están listos y podemos implementar el Carrito de Compras. Observa que el método de pago del Carrito de Compras, requiere el algoritmo de pago como argumento

Crearemos una clase Item para almacenar la información de los productos y pasárselo al carrito de compra

Vamos a probar como funciona nuestra programa

De esa manera podemos agregar muchas mas formas de pago sin necesidad de tocar las demás clases haciendo mas flexible nuestro programa.

¿Sencillo no?

Los archivos lo puedes encontrar en en el siguiente enlace:
https://github.com/benjamingb/DesignPatternsPHP/tree/master/Behavioral/Strategy

Benjamín

Soy Benjamín Gonzales B, desarrollador de Software con más de 10 años de experiencia, me apasiona todo lo relacionado a las nuevas tecnologías y el software libre. Me gusta investigar , leer y aprender cada día algo nuevo. Desarrollo en LINUX,PHP, JAVA, C#, Javascript, MySql, SqlServer, entre otros y actualmente ando experimentando con lenguajes funcionales como: Erlang, Clojure y Scala. Y otros no funcionales como GO.

Latest posts by Benjamín (see all)

Strategy Pattern en acción con PHP
Compartir
Tweet about this on TwitterShare on Facebook2Share on Google+0Share on LinkedIn0Email this to someonePin on Pinterest0Share on Tumblr0Share on Reddit0Share on StumbleUpon0
Etiquetado en:            

3 thoughts on “Strategy Pattern en acción con PHP

  • Pingback: Patrones de Diseño - patrón estrategia en php

  • Noviembre 30, 2015 a las 9:54 pm
    Enlace permanente

    como decidimos que estrategia usar? o acaso hay que hacer un call a todas?

    Responder
    • Diciembre 1, 2015 a las 12:58 am
      Enlace permanente

      Hola Jorge
      La estrategia que vas usar es según tu contexto, esto quiere decir que si viene un cliente a tu tienda virtual y desea pagar con una tarjeta de crédito (contexto) ya tienes preparada un algoritmo que procesa la tarjeta de crédito (estrategia), si otro cliente desea pagar con un cheque ya tienes preparada otro algoritmo para procesar un cheque.

      Aquí hay una explicación mas amplia sobre este patrón Strategy Pattern

      Recuerda que por lo general es una estrategia para un contexto, cambia de contexto cambia de estrategia.

      Espero haberte ayudado

      Saludos!

      Responder

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *