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()
}
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
ResponderEliminarUn poco de explicación también haría bien ;) Te pongo 4.
ResponderEliminar