Documentos de Académico
Documentos de Profesional
Documentos de Cultura
|
u
!
"
1. Introducción
2. Propósito
3. También conocido como«
4. Motivación
5. Aplicabilidad
6. Estructura
7. Participantes
8. Colaboraciones
9. Consecuencias
10. Implementación
11. Código de ejemplo
12. Usos conocidos
13. Patrones relacionados
14. Conclusiones
|
|
|
!
"
#
' it
|
%
|
$
%
Ejemplo de partida: Creación de Widgets en
aplicación cliente.
' Un armazón para interfaces gráficas que soporte
distintos tipos de presentación (look-and-feel).
' Las aplicaciones cliente no deben cambiar porque
cambie el aspecto de la interfaz de usuario.
' Los clientes no son conscientes de las clases
concretas, sino sólo de las abstractas.
' Sin embargo los WidgetFactory imponen
dependencias entre las clases concretas de los
Widgets que contiene.
|
&
'(
)%
|
'(
)
' a# Las aplicaciones clientes NO deben crear sus
widgets para un Look-and-Feel concreto.
p
p
' p Abstraer el proceso de creación de
widgets. En lugar de:
p
p
Usar:
p p
ü
será una instancia
(
( ü
|
*
|)
' Un sistema debe ser
independiente de los procesos
de creación, composición y
representación de sus
productos.
' Un sistema debe ser
configurado con una familia
múltiple de productos.
' Una familia de productos
relacionados se ha diseñado
para ser usados conjuntamente
(y es necesario reforzar esta
restricción).
' Se quiere proporcionar una
librería de productos y no
revelar su implementación
(simplemente revelando sus
interfaces).
|
'
|
' | (WidgetFactory): Declara un interfaz
para las operaciones de creación de objetos de
productos abstractos
'
(MotifWidgetFactory,
PMWidgetFactory): Implementa las operaciones para la
creación de objetos de productos concretos.
' | (Window, ScrollBar): Declara una
interfaz para los objetos de un tipo de productos.
'
(MotifWindow, MotifScrollBar): Define
un objeto de producto que creará la correspondiente
m , a la vez que implementa la interfaz de
.
'
: Usa solamente las interfaces declaradas por las
clases
y
.
|
)
|
' *entajas:
Aísla las clases de implementación: ayuda a
controlar los objetos que se creen y encapsula la
responsabilidad y el proceso de creación de objetos
producto. (código del cliente)
Hace fácil el intercambio de familias de productos
sin mezclarse, permitiendo configurar un sistema
con una de entre varias familias de productos:
cambio de factory cambio de familia.
Fomenta la consistencia entre productos.
|
' Desventajas:
Soportar nuevas clases de productos es
difícil. Porque la interfaz del Abstract
Factory arregla el bloque de productos que
pueden ser creados. Para soportar nuevas
clases se requiere extender la interfaz
factory. (cambios en AF clases y subclases)
' Posible Solución:
Pasarle un parámetro a los métodos de creación
de productos clase abstracta común
necesidad de downcast solución no segura.
|
)
!|
'
Sólo una instancia de ConcreteFactory por familia
|
$
+'(
)
|
&
'(
)+
|
'(
)+
|
*
,
' ET++ usa Abstract
Factory para archivar
portablemente sobre
diferentes sistemas
windows (X Windows y
Sun*iew)
' La clase base abstracta
de WindowsSystem
define la interfaz para
!(
"
"()
*+,,
-
crear objetos que
representan recursos del
sistema windows.
|
)
|
)
' Una situación en la que el programa maneja un tipo de
objetos con unas características comunes y algunas
características propias. Esto en general en software se
resuelve mediante el uso de dos características de los
lenguajes de programación orientados a objetos,
# $ % .
' El patrón de diseño Abstract Factory aborda el problema
de la creación de familias de objetos (como por ejemplo
interfaces gráficos) que comparten toda una serie de
características comunes en los objetos que componen
dichas familias.
' El uso de este patrón está recomendado para situaciones
en las que tenemos una familia de productos concretos y
prevemos la inclusión de distintas familias de productos
en un futuro.
|
- )+./
' Cano F.P., Gonzalez R. & Zamora R.
. Obtenido el 10 de Marzo
de 2008 desde:
[http://kybele.escet.urjc.es/documentos/SI/Patrones/01_Abstract%20Factory.p
pt#257,4,Definición del Abstract Factory]
' Abstract Factory. (WIIPEDIA, 2008). Obtenido el 10de Marzo de 2008 desde:
http://es.wikipedia.org/wiki/Abstract_Factory_(patr%C3%B3n_de_dise%C3%B
1o)
' Gamma E., Helm R., Johnson R., *lissides J. (1995) Abstract Factory. Design
Patterns: Elements of Reusable Object-Oriented Software. Ed.: Addison-
Wesley.
' http://gpwiki.org/images/b/b1/AbstractFactoryPatternUMLDiagram.png
' http://www.tml.tkk.fi/~pnr/GoF-models/gif/Abstract-factory.gif
' Abstract Factory Design Pattern (2008). Obtenido el 10 de Marzo de 2008
desde: http://blog.dotnetstyling.com/archive/2007/11/25/Abstract-Factory-
Design-Pattern.aspx
|
>
a &
| ||
||
||