fabric a abstract a

Upload: conny-andrea-bullo

Post on 05-Jul-2018

223 views

Category:

Documents


0 download

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.