Patrones de diseño en php5

Hola a todos,una vez mas vuelvo a escribir un pequeño post que les servirá para comprender la implementación de algunos patrones de diseño en php5…

comenzaré por definir el termino patrón de diseño …

1. Que es un patrón de diseño
– Un patrón de diseño es una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características:
* Debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores
* Debe ser reusable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias
– ver fuentes : Patrones de diseño

y listo… ahora vamos a ver lo que nos gusta a todos los desarrolladores ” !! código ¡¡ ”

:: Patron Singleton ::

El patrón de diseño singleton (instancia única) está diseñado para restringir la creación de objetos pertenecientes a una clase o el valor de un tipo a un único objeto.

class singleton {
     private static $unica_instancia;
     public static function get_instance () {
     if (!isset($unica_instancia)) {
          $obj=__CLASS__;
          self::$unica_instancia=new $obj;
     }
          return self::$unica_instancia;
     }
     public function get_method () {
          echo ‘mi objeto de la clase ‘.__CLASS__;
     }
     private function __construct() {
          //nadie lo puede instanciar
     }
     private function __clone() {
          throw new Exception(“No se permite clonar”);
     }
}

— El patrón Singleton solo permite crear una instancia de la clase

     $mi_objeto=singleton::get_instance();
      $mi_objeto->get_method($mi_objeto);

Es bueno comprender este patrón, ya que hay otros patrones que se basan en éste.

 

:: Patron Factory ::

el patrón de diseño Factory Method consiste en utilizar una clase constructora

define(DOKEOS,”En Dokeos “);
class Software_libre {
     function __toString () {
          return DOKEOS.”desarrollamos software libre”;
     }
}
class Software_a_medida {
     function __toString () {
          return DOKEOS.”desarrollamos software a medida…”;
     }
}

abstract class dokeos {
     public static function crea ($class_kind) {
          return new $class_kind;
     }
}
echo dokeos::crea(‘Software_libre’);
echo dokeos::crea(‘Software_a_medida’);

:: Patron Registry ::

En resumidas palabras, el Registry Pattern, es un medio simple y eficiente de compartir datos y objetos en nuestra aplicación sin tener que preocuparse de mantener numerosos parámetros o hacer uso de variables globales.

class Registry {
     private $datos = array();

     public function add($key, $object) {
          if (!isset($this->datos[$key])) {
               $this->datos[$key] = $object;
          }
     }

     public function remove($key) {
           if (!isset($this->datos[$key])) {
               unset($this->datos[$key]);
          }
     }

     public function get($key) {
          if (!isset($this->datos[$key])) {
               return $this->datos[$key];
          }
     }

     public function exist($key) {
          if (isset($this->datos[$key])) {
               return true;
          }
          else return false;
     }
}

Comments