Patrón estrategia

a serie de patrones de diseño en PHP5, veamos ahora uno de los patrones que más me llaman la atención: el strategy pattern (patrón estrategia).Este patrón se usa generalmente cuando se desea cambiar entre diferentes versiones de un algoritmo. Es decir, si tenemos un código que genera un archivo comprimido, bajo ciertas circunstancias, podemos querer un archivo .ZIP y bajo circunstancias diferentes, queremos crear un archivo .TAR.GZ.

Para implementar este patrón debemos declarar una interface (o bien una clase abstracta) base con un método para el algoritmo, el cual es implementado heredando desde las clases concretas.

En el código de nuestro sistema, debemos decidir cual estrategia concreta es la relevante, la cual debe ser instanciada para ser usada.

El ejemplo que usaré para mostrar este patrón, es la selección del idioma del contenido al abrir una página Web. Por simplicidad, asumiré que si la palabra “es” existe en $_SERVER["HTTP_ACCEPT_LANGUAGE"], estamos frente a un usuario que habla español, de otra forma, estamos frente a un usuario que prefiere el inglés.

PHP:
  1. < ?php
  2. interface langStrategy {
  3.         public function helloWorld();
  4. }
  5. class enLang implements langStrategy {
  6.     public function helloWorld() {
  7.         return “Hello World”;
  8.     }
  9. }
  10. class esLang implements langStrategy {
  11.     public function helloWorld() {
  12.         return “Hola Mundo”;
  13.     }
  14. }
  15. $ln = explode(‘;’,$_SERVER[HTTP_ACCEPT_LANGUAGE]);
  16. if (preg_match(‘/es/’,$ln[0])) {
  17.         $langObj = new esLang();
  18. } else {
  19.     $langObj = new esLang();
  20. }
  21. echo $langObj->helloWorld();
  22. ?>

El patrón estrategia es usado a menudo al mismo tiempo que el patrón factory, el cual se encargaría de elegir la estrategia correcta. La siguiente entrega vendrá con este patrón.

Una respuesta a Patrón estrategia

  1. Pedro dice:

    Hola, favor de no copiar/plagiar mis contenidos de esta forma. mi articulo original esta en http://www.pecesama.net/weblog/2008/03/27/patron-estrategia/

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

A %d blogueros les gusta esto: