fabric a abstract a
TRANSCRIPT
-
8/16/2019 Fabric a Abstract A
1/18
● Ampliación de Programación Orientada a Objetos
Fábrica Abstracta(Abstract Factory)
Patrones de diseño
También conocido como Kit
● Juan Manuel Borges Caño
-
8/16/2019 Fabric a Abstract A
2/18
Organización
● Propósito: De Creación Tiene que ver con el proceso de creación. Delega alguna parte del proceso de creación de objetos en
otro objeto● Ámbito: Objeto Se aplica principalmente a objetos. Tratan con las relaciones
entre objetos, que pueden cambiarse en tiempo de
ejecución son mu din!micas.
-
8/16/2019 Fabric a Abstract A
3/18
Relación entre los patrones de diseño
● Prototipo: con"igurar "!bricas din!micamente
●
Singleton: instancia #nica $na "!brica concreta suele ser un Singleton.
● %actor met&od: implementado usando
-
8/16/2019 Fabric a Abstract A
4/18
Propósito
● Proporciona una inter"a' para crear "amilias deobjetos relacionados o que dependen entre s(, sinespeci"icar sus clases concretas.
)bstrae la implementación de las clases "!bricas de "amiliasde objetos.
-
8/16/2019 Fabric a Abstract A
5/18
Motivación
● *jemplo: %!brica de +aberintos
Desarrollar un toolkit de creación de laberintos que admita
m#ltiples inter"aces gr!"icas de visuali'ación.
-
8/16/2019 Fabric a Abstract A
6/18
Ejeplo
● %!brica )bstracta:
Declara una inter"a' para crear cada tipo b!sico de
laberinto. – %!bricade+aberintos
-
8/16/2019 Fabric a Abstract A
7/18
Ejeplo
● %!brica Concreta:
mplementa las operaciones para crear objetos producto
concretos.
– %!bricade+aberintos-D – %!bricade+aberintosD
-
8/16/2019 Fabric a Abstract A
8/18
Ejeplo
● Producto )bstracto:
Declara una inter"a' para un tipo de objeto producto.
– /entana – +aberinto – 0abitación – Pared – ParedPuerta – 1ugador
-
8/16/2019 Fabric a Abstract A
9/18
Ejeplo
● Producto Concreto:
De"ine un objeto producto que sea creado por la "!brica
correspondiente. mplementa la inter"a' Producto )bstracto
– /entana-D, +aberinto-D, 0abitación-D, Pared-D,ParedPuerta-D, 1ugador-D
– /entanaD, +aberintoD, 0abitaciónD, ParedD,ParedPuertaD, 1ugadorD
-
8/16/2019 Fabric a Abstract A
10/18
Ejeplo
● Cliente:
Sólo usa inter"aces declaradas por las clases %!brica
)bstracta Producto )bstracto – %!bricaDe+aberintos – /entana, +aberinto, 0abitación, Pared,
ParedPuerta, 1ugador
-
8/16/2019 Fabric a Abstract A
11/18
Ejeplo
● *squema de las clases:
-
8/16/2019 Fabric a Abstract A
12/18
Ejeplo
Ventana ventana = fábrica.ConstruirVentana();Jugador jugador = fábrica.ConstruirJugador(); Laberinto laberinto = fábrica.ConstruirLaberinto(); Habitacion habitacin = fábrica.ConstruirHabitacin(!ará"etros);
habitacin.#stablecerLado($orte% fábrica.Construir&ared());habitacin.#stablecerLado('ur% fábrica.Construir&ared());habitacin.#stablecerLado(#ste% fábrica.Construir&ared&uerta());habitacin.#stablecerLado(este% fábrica.Construir&ared());laberinto.*adirHabitacin(habitacin);
laberinto.'tart(Ventana% jugador);
2o usa código de una implementación o "!brica particular.*l mismo código "uncionar! con di"erentes tipos de "!bricas.
-
8/16/2019 Fabric a Abstract A
13/18
Fábrica!e"aberintos#!
-
8/16/2019 Fabric a Abstract A
14/18
Fábrica!e"aberintos$!
-
8/16/2019 Fabric a Abstract A
15/18
Aplicabilidad
● $n sistema que debe ser independiente de cómo secrean, componen representan sus productos.
●
$n sistema que debe ser con"igurado con una"amilia de productos de entre varias.
-
8/16/2019 Fabric a Abstract A
16/18
Aplicabilidad
● $na "amilia de objetos producto relacionados est!dise3ada para ser usada conjuntamente, estarestricción es necesaria.
● Proporcionar una biblioteca de clases deproductos, solo revelar sus inter"aces, no susimplementaciones
-
8/16/2019 Fabric a Abstract A
17/18
%olaboraciones
● 2ormalmente sólo se crea una #nica instancia deuna %!bricaConcreta en tiempo de ejecución, quecrea objetos que tienen una determinada
implementación.
● %!brica)bstracta delega la creación de objetosproducto en su subclase %!bricaConcreta.
-
8/16/2019 Fabric a Abstract A
18/18
%onsec&encias
● )(sla las clases concretas
● %acilita el intercambio de "amilias de productos.
● Promueve la consistencia entre productos.
● *s di"(cil dar cabida a nuevos tipos de productos.