Cargando la página...

Abstract Factory Pattern - Patrón Fábrica Abstracta

Publicado por Gastón el 13/12/2009 en PHP - Nivel Avanzado

Tabla de contenidos

Avatar de

La tabla de contenidos pertenece al artículo completo y no al contenido parcial de cada página del mismo si fuese el caso.

Leer los comentarios.

Resúmen

Aprende como leer un diagrama de clases y crear código a partir del mismo.
Como ejemplo se aplica un diagrama de clases del patrón Abstract Factory.

Sobre el autor

Avatar de gaston

Gastón tiene 29 años, vive en Argentina / Santa Fe / Santa Fe y su ocupación es Desarrollador de aplicaciones web.

Forma parte del club desde el 19/10/2009 habiendo estado en linea hace 6 días a las 01:23 por última vez.

Ha publicado 4 artículos en clubdesarrolladores con un promedio de valoración de 7.40 puntos. Puedes visitar su sitio web en http://www.devstudios.com.ar

Estadísticas

  • Leido 2415 veces
  • Valorado 10.00 puntos

Patrón de diseño: Abstract Factory



Este patrón nos permite crear objetos sin especificar directamente sus clases.

El diagrama de clases



Diagrama de clases Abstract Factory

/res/userimages/2259/131-abstractfactory.jpg

Código Fuente



Código fuente Patrón de diseño Abstract Factory

<?php

/**
* @author Gastón (clubdesarrolladores.com)
* @copyright 2008
*/


abstract class AbstractInterfazFactory
{
abstract function CrearVentana($titulo);
abstract function CrearBoton($texto);
static function RecogerFactory($sistemaOperativo)
{
switch($sistemaOperativo)
{
case 'Linux':
return new LinuxFactory();
break;
case 'Windows':
return new WindowsFactory();
break;
}
}
}


class LinuxFactory extends AbstractInterfazFactory
{
function CrearVentana($titulo)
{
return new VentanaLinux($titulo);
}
function CrearBoton($texto)
{
return new BotonLinux($texto);
}
}

class WindowsFactory extends AbstractInterfazFactory
{
function CrearVentana($titulo)
{
return new VentanaWindows($titulo);
}
function CrearBoton($texto)
{
return new BotonWindows($texto);
}
}
?>


<?php
abstract class AbstractVentana
{
public $_sTitulo;
abstract function MostrarVentana();
}

class VentanaLinux extends AbstractVentana
{
function __construct($titulo)
{
$this->_sTitulo = $titulo;
echo 'Creada Ventana Linux'."<br>";
}
function MostrarVentana()
{
echo 'Mostrada Ventana Linux: '.$this->_sTitulo."<br>";
}
}

class VentanaWindows extends AbstractVentana
{
function __construct($titulo)
{
$this->_sTitulo = $titulo;
echo 'Creada Ventana Windows'."<br>";
}
function MostrarVentana()
{
echo 'Mostrada Ventana Windows: '.$this->_sTitulo."<br>";
}
}


<?php
abstract class AbstractBoton
{
public $_sTexto;
abstract function MostrarBoton();
}

class BotonLinux extends AbstractBoton
{
function __construct($texto)
{
$this->_sTexto = $texto;
echo 'Creado Boton Linux: '."<br>";
}
function MostrarBoton()
{
echo 'Mostrado Boton Linux: '.$this->_sTexto."<br>";
}
}

class BotonWindows extends AbstractBoton
{
function __construct($texto)
{
$this->_sTexto = $texto;
echo 'Creado Boton Windows'."<br>";
}
function MostrarBoton()
{
echo 'Mostrado Boton Windows: '.$this->_sTexto."<br>";
}
}

?>


Modo de uso



Para usar este ejemplo de Patrón de diseño Abstract Factory en PHP hacemos uso de una función helper (CrearAplicacion)

<?php
function CrearAplicacion($so, $tv)
{
$ventana = $so->CrearVentana($tv);
$ventana->MostrarVentana();
$btn1 = $so->CrearBoton('btn1');
$btn1->MostrarBoton();
$btn2 = $so->CrearBoton('btn2');
$btn2->MostrarBoton();
echo "<br>";
}

CrearAplicacion(AbstractInterfazFactory::RecogerFactory('Windows'), 'Microsoft Word');
CrearAplicacion(AbstractInterfazFactory::RecogerFactory('Linux'), 'Firefox');
?>


A partir del diagrama de clases hemos generado el código fuente anterior, el proceso es simple, solo intenta asociar el diagrama de clases con el código fuente y te darás cuenta.

El código fuente completo puede descargarse (ver debajo).

Si tiene alguna pregunta sobre éste artículo por favor deje un comentario y será respondido.

También recuerde que éste artículo tiene descargas disponibles.

Descargas

descarga Código fuente Patrón Abstract Factory (13.12.09 | 25 descargas | 731 bytes) Más información:

Comentarios

Sus comentarios son importantes.

Listado de comentarios

No hay comentarios para listar, si desea puede crear el primer comentario para este artículo.

Agregar un comentario

Debe estar identificado para agregar un comentario