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 Gastón

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

Forma parte del club desde 19/10/2009 a las 20:52 habiendo estado en linea hace 2 días a las 00:18 por última vez.

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

Estadísticas

  • Leido 8627 veces
  • Valorado 8.33 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 | 92 descargas | 731 bytes) Más información:

Comentarios

Sus comentarios son importantes.

Listado de comentarios

1
20
agosto
2011
Avatar de Mauricio José Tobares
m... acusenme de ignota pero sin un ejemplo de aplicacion el code no me sirve de nada... son solo letritas que no alcanzo a entender como aplicar en un proyecto...

bueno, si se te ocurrre hacer algun script o alguna cosa donde utilices este ejemplo pues te estaré agradecido a ver si logro terminar de entender

Agregar un comentario

Debe estar identificado para agregar un comentario