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
http://oscar-sandoval…
http://oscar-sandoval.blogspot.com/ aca hay un tema que trata sobre patrones GRASP y GoF.