PDF de programación - Capítulo 4 El patrón Abstract Factory

Imágen de pdf Capítulo 4 El patrón Abstract Factory

Capítulo 4 El patrón Abstract Factorygráfica de visualizaciones

Publicado el 9 de Marzo del 2019
1.338 visualizaciones desde el 9 de Marzo del 2019
189,6 KB
6 paginas
Creado hace 8a (03/11/2015)
35

Capítulo 4
El patrón Abstract Factory

1. Descripción

El patrón Abstract Factory

El objetivo del patrón Abstract Factory es la creación de objetos agrupa-
dos en familias sin tener que conocer las clases concretas destinadas a la crea-
ción de estos objetos.

2. Ejemplo

El sistema de venta de vehículos gestiona vehículos que funcionan con gasoli-
na y vehículos eléctricos. Esta gestión está delegada en el objeto Catálogo
encargado de crear tales objetos.
Para cada producto, disponemos de una clase abstracta, de una subclase
concreta derivando una versión del producto que funciona con gasolina y de
una subclase concreta derivando una versión del producto que funciona con
electricidad. Por ejemplo, en la figura 4.1, para el objeto Scooter, existen una
clase abstracta Scooter y dos subclases concretas ScooterElectricidad
y ScooterGasolina.

36

Patrones de diseño en PHP
Los 23 modelos de diseño

El objeto Catálogo puede utilizar estas subclases concretas para instanciar
los productos. No obstante si fuera necesario incluir nuevas clases de familias
de vehículos (diésel o mixto gasolina-eléctrico), las modificaciones a realizar
en el objeto Catálogo pueden ser bastante pesadas.
El patrón Abstract Factory resuelve este problema introduciendo una
interfaz FábricaVehículo que contiene la firma de los métodos para defi-
nir cada producto. El tipo devuelto por estos métodos está constituido por una
de las clases abstractas del producto. De este modo el objeto Catálogo no
necesita conocer las subclases concretas y permanece desacoplado de las fami-
lias de producto.
Se incluye una subclase de implementación de FábricaVehículo por cada
familia de producto, a saber las subclases FábricaVehículoElectrici-
dad y FábricaVehículoGasolina. Dicha subclase implementa las opera-
ciones de creación del vehículo apropiado para la familia a la que está asociada.
El objeto Catálogo recibe como parámetro una instancia que responde a la
interfaz FábricaVehículo, es decir o bien una instancia de Fábrica-
VehículoElectricidad, o bien una instancia de FábricaVehículo-
Gasolina. Con dicha instancia, el catálogo puede crear y manipular los
vehículos sin tener que conocer las familias de vehículos y las clases concretas
de instanciación correspondientes.

d
e
v
r
e
s
e
r

s
t
h
g
i
r

l
l

A

-

I

N
E

s
n
o
i
t
i
d
E

©

El patrón Abstract Factory
Capítulo 4

37

El conjunto de clases del patrón Abstract Factory para este ejemplo se
detalla en la figura 4.1.

Figura 4.1 - El patrón Abstract Factory aplicado a las familias de vehículos

38

3. Estructura

Patrones de diseño en PHP
Los 23 modelos de diseño

3.1 Diagrama de clases

La figura 4.2 detalla la estructura genérica del patrón.

Figura 4.2 - Estructura del patrón Abstract Factory

d
e
v
r
e
s
e
r

s
t
h
g
i
r

l
l

A

-

I

N
E

s
n
o
i
t
i
d
E

©

El patrón Abstract Factory
Capítulo 4

3.2 Participantes

39

Los participantes del patrón son los siguientes:
– FábricaAbstracta (FábricaVehículo) es una interfaz que define las

firmas de los métodos que crean los distintos productos.

– FábricaConcreta1, FábricaConcreta2

(FábricaVehículoE-
lectricidad, FábricaVehículoGasolina) son las clases concretas
que implementan los métodos que crean los productos para cada familia de
producto. Conociendo la familia y el producto, son capaces de crear una ins-
tancia del producto para esta familia.

– ProductoAbstractoA y ProductoAbstractoB

(Scooter y
Automóvil) son las clases abstractas de los productos independientemente
de su familia. Las familias se introducen en las subclases concretas.

– Cliente es la clase que utiliza la interfaz de FábricaAbstracta.

3.3 Colaboraciones

La clase Cliente utiliza una instancia de una de las fábricas concretas para
crear sus productos a partir de la interfaz FábricaAbstracta.

Observación
Normalmente solo es necesario crear una instancia de cada fábrica concre-
ta, que puede compartirse por varios clientes.

4. Dominios de uso

El patrón se utiliza en los dominios siguientes:
– Un sistema que utiliza productos necesita ser independiente de la forma en

que se crean y agrupan estos productos.

– Un sistema está configurado según varias familias de productos que pueden

evolucionar.

40

Patrones de diseño en PHP
Los 23 modelos de diseño

5. Ejemplo en PHP

Presentamos a continuación un pequeño ejemplo de uso del patrón escrito en
PHP. El código PHP correspondiente a la clase abstracta Automovil y sus
subclases aparece a continuación. Es muy sencillo, describe los cuatro atribu-
tos de los automóviles así como el método mostrarCaracteristicas que
permite visualizarlas.

<?php
namespace AbstractFactory;

abstract class Automovil
{
/**
*
* @var string
*/
protected $modelo;
/**
*
* @var string
*/
protected $color;
/**
*
* @var int
*/
protected $potencia;
/**
*
* @var double
*/
protected $espacio;
/**
*
* @param string $modelo
* @param string $color
* @param int $potencia
* @param double $espacio
*/
public function __construct($modelo, $color, $potencia,
$espacio)
{
$this->modelo = $modelo;
$this->color = $color;

d
e
v
r
e
s
e
r

s
t
h
g
i
r

l
l

A

-

I

N
E

s
n
o
i
t
i
d
E

©
  • Links de descarga
http://lwp-l.com/pdf15464

Comentarios de: Capítulo 4 El patrón Abstract Factory (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad