miércoles, 30 de marzo de 2011

Código de patrones de diseño

Aquí les posteo mi código de diseño de patrones


//Patron Singleton
class SingletonUS
{
//Aquí se pueden edclarar las demas variables para el query y la db, éstas solo son como la escructura
private static $singleInstancia;
private function __construct(){ }

public static function getInstancia(){
if(!self::$singleInstancia){
self::$singleInstancia = new self();
}
return self::$singleInstancia;
//Patron Strategy
class StraUs {

public function CreateOrUpdate($name, $mail, $userid = null, $father)
{
if( is_null($userid) ) {
// Esto significa que el usuario aún no existe, crear nuevo registro
}
else {}

if( is_null($father) ) {
// Si tiene papa el empleado
}
else {}

}
}}

/* Aquí se va añadiendo los métodos de la clase */
function Metodo(){
var_dump(self::$singleInstancia);
}

}

$mysingleton = SingletonUS::getInstancia();
$mysingleton->Metodo();

$mysingleton = SingletonUS::getInstancia();
$mysingleton->Metodo();




//Patron Strategy
class StraUs {

public function CreateOrUpdate($name, $mail, $userid = null, $father)
{
if( is_null($userid) ) {
// Esto significa que el usuario aún no existe, crear nuevo registro
}
else {}

if( is_null($father) ) {
// Si tiene papa el empleado
}
else {}

}
}




//Patrones Factory
abstract class FactoriCnva {
protected $_html;
}

public function getHtml()
{
return $this->_html;
}
}

class ImageFactoriCnva extends FactoriCnva {
protected $_html = "...";
}

class InputFactoriCnva extends FactoriCnva {
protected $_html = "...";
}

class FactoriCnvaFactory
{
public static function createFactoriCnva($type)
{
$baseClass = 'Boton';
$targetClass = ucfirst($type).$baseClass;

if (class_exists($targetClass) && is_subclass_of($targetClass, $baseClass)) {
return new $targetClass;
} else {
throw new Exception("El tipo de botón '$type' no existe.");
}
}
}

$FactoriCnvas = array('image','input');
foreach($FactoriCnvas as $b) {
echo FactoriCnvaFactory::createFactoriCnva($b)->getHtml()
}

abstract class FactoriCnva {
protected $_html;
}

public function getHtml()
{
return $this->_html;
}
}

class Nodo extends FactoriCnva {
protected $_html = "...";
}

class Linea extends FactoriCnva {
protected $_html = "...";
}

class FactoriCnvaFactory
{
public static function createFactoriCnva($type)
{
$baseClass = 'Canva';
$targetClass = ucfirst($type).$baseClass;

if (class_exists($targetClass) && is_subclass_of($targetClass, $baseClass)) {
return new $targetClass;
} else {
throw new Exception("La canva '$type' no existe.");
}
}
}

$FactoriCnvas = array('Nodo','Linea');
foreach($FactoriCnvas as $b) {
echo FactoriCnvaFactory::createFactoriCnva($b)->getHtml()
}


2 comentarios:

  1. Una disculpa por la forma de visualización del código y de la página, lo que pasa, esque me estuve metiendo a la edicion del html de la plantilla y creo que no me fue del todo bien, pero trataré de arreglarlo, para su mejor visualización

    ResponderEliminar
  2. Un poco de explicación también haría bien ;) Te pongo 4.

    ResponderEliminar