Sei sulla pagina 1di 4

F

abrica Abstracta (Abstract Factory)


Patr
on de Creaci
on
Prop
osito
Interfaz para la creaci
on de familias de objetos relacionados sin especificar sus clases concretas
Motivaci
on

Interfaz de usuario con m


ultiples look-and-feels
(Motif, Presentation Manager, Windows, ...)
Cada look-and-feel define su propio juego de
componentes (widgets: botones, ventanas, barras de desplazamiento, ...)
Problema: Por razones de portabilidad el resto
del sistema no debe hacer referencia a componentes concretos
Soluci
on: Clase abstracta con un m
etodo de
fabricaci
on para cada componente (f
abrica abstracta)

Motivaci
on (cont.)

Componentes...
Clase abstracta para cada componente
El cliente crea componentes a trav
es de la
f
abrica abstracta

La f
abrica de componentes garantiza el uso consistente de componentes de un mismo look-andfeel
Aplicabilidad

Un sistema debe ser independiente de la forma


en que sus productos son creados, compuestos,
y representados
Un sistema debe ser configurado con una de
muchas familias de productos disponibles
Una familia de productos son dise
nados para su
uso conjunto, y se requiere asegurar este uso
conjunto
Se desea proporcionar una biblioteca de productos presentando su interfaz, pero no su implementaci
on

Estructura

Participantes

F
abrica Abstracta (AbstractFactory)
Declara interfaz para las operaciones que crean
productos abstractos (m
etodos de fabricaci
on)
F
abrica Concreta (ConcreteFactory)
Implementa los m
etodos de fabricaci
on de productos concretos
Producto Abstracto (AbstractProducti )
Declara la interfaz utilizada por el cliente para
un tipo de producto concreto
Producto Concreto (ConcreteProductij)
Define un producto creado por el m
etodo de
fabricaci
on de una f
abrica concreta
Implementa la interfaz Producto Abstracto i
Cliente (Client)
Usa s
olo las interfaces declaradas por F
abrica
Abstracta y Productos Abstractos

Colaboraciones
Normalmente se crea una
unica F
abrica Concreta,
que se encarga de crear los productos concretos
La F
abrica Abstracta difiere la creaci
on de productos a sus subclases
Consecuencias

Asla clases concretas (no aparecen en el c


odigo
del cliente)
Facilita el intercambio de familias de productos
Simplifica consistencia entre productos
Difcil a
nadir nuevas clases de productos
Implementaci
on
nica
F
abricas usualmente Instancia U

Creaci
on de productos
M
etodo de Fabricaci
on (normal)
Prototipo (menos habitual, aunque evita extender F
abrica
Abstracta)

Flexibilizar f
abrica mediante parametrizaci
on de
m
etodo de fabricaci
on
M
etodo de fabricaci
on puede crear distintos tipos de
componentes en base a los par
ametros del m
etodo
El cliente debe realizar una conversi
on tras crear el
producto (downcasting)
(En la mayora de los lenguajes) no hay ninguna relaci
on
formal entre valores de los par
ametros y productos
creados (salvo c
odigo fuente!)
4