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;
     }
}

Compartelo en tus redes socialesShare on Facebook
Facebook
Tweet about this on Twitter
Twitter
Email this to someone
email
Share on Tumblr
Tumblr
Share on LinkedIn
Linkedin

One Comment

Deja un comentario

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