dsii - clase19 - gof

Download Dsii - Clase19 - Gof

Post on 24-Oct-2015

4 views

Category:

Documents

0 download

Embed Size (px)

TRANSCRIPT

  • DESARROLLO DE SOFTWARE II

    Escuela de Ingeniera y Sistemas de Computacin

    ING. PAVEL FRANCO MARNPAVEL_FRANCO@HOTMAIL.COM

    PAVELFM@GMAIL.COM

    PFRANCO@BANCODEOCCIDENTE.COM.CO

    Agosto Diciembre 2009

  • Universidad del Valle

    Patrones de diseo

  • Introduccin

    Factoria

    Singleton

    Fachada

    Adaptador

    Compuesto

    Patrones de diseo

    Universidad del Valle

  • Universidad del Valle

    Introduccin

  • Propuestos por Gamma, Helm, Johnson, Vlissides.

    Factora

    Singleton

    Fachada

    Adaptador

    Compuesto

    Introduccin

    Universidad del Valle

    5

  • Universidad del Valle

    Factora

  • Este tipo de patrn es muy usado debido a su

    utilidad, pues su objetivo es devolver una instancia

    de mltiples tipos de objetos. Normalmente, todos

    estos objetos provienen de una misma clase padre,

    diferencindose entre ellos por algn aspecto de

    comportamiento.

    Factora

    Universidad del Valle

    7

  • Factora

    Universidad del Valle

    8

  • Problema

    Quin debe ser el responsable de la creacin de

    objetos en una familia de clases?

    Solucin

    Crear una clase derivada que toma la decisin

    sobre qu clase instanciar y cmo instanciarla.

    Factora

    Universidad del Valle

    9

  • La clase factora devuelve una instancia de una objeto

    segn los datos que se le pasan como parmetros.

    Para que la creacin centralizada de objetos sea lo

    til y eficaz posible, todos los objetos creados

    descienden de la misma clase o implementan la misma

    interface, as podemos usarlos todos de la misma

    manera, con los mismo mtodos (gracias al

    polimorfismo), sin importar que clase concreta estamos

    tratando en cada momento.

    Factora

    Universidad del Valle

    10

  • Estructura:

    Product. Una clase en este rol es superclase abstracta de objetos producidospor el patrn Mtodo de Fbrica.

    ConcreteProduct. Cualquier claseconcreta instanciada por los objetosque participan en este patrn.

    CreationRequestor. El objeto querequiere la creacin, es una claseindependiente de la aplicacin quenecesita crear clases especificas de laaplicacin. Esto lo hace indirectamentea travs de una instancia de la claseFactory.

    Factora

    Universidad del Valle

    11

  • FactoriIF. Es una interfazindependiente de la aplicacin. Losobjetos que crean productosusando CreationRequestor debenimplementar esta interfaz. Lasinterfaces de este tipo declaran unmtodo que es llamado por unobjeto CreationRequestor paracrear productos concretos.

    Factory. Es una clase especifica dela aplicacin que implementa lainterfaz de fabrica adecuada ytiene un mtodo para crearproductos concretos.

    Factora

    Universidad del Valle

    12

  • Implementacin

    El patrn permite que la funcin de creacin cree

    mltiples instancias de Product. El objeto Factory

    ser el encargado de decidir segn los parmetros

    que le pasemos, el tipo de objeto que nos

    devolver.

    Factora

    Universidad del Valle

    13

  • public class Vehiculo{

    }

    public class Camion extends Vehiculo{

    }

    public class Coche extends Vehiculo{

    }

    Factora

    Universidad del Valle

    14

  • public class VehiculoFactory{

    public static CAMION = 0;

    public static COCHE = 1;

    public Vehiculo getVehiculo(inttipo){

    if(tipo == VehiculoFactory.CAMION){

    return new CAMION();

    }

    else{

    return new COCHE();

    }

    }

    }

    Factora

    Universidad del Valle

    15

  • Aplicacin

    Cuando una clase no puede anticipar el tipo deobjetos que debe crear.

    Una clase quiere que sean sus subclases quienesespecifiquen los objetos que sta crea.

    Queremos centralizar el proceso de creacin deinstancias.

    Crear objetos dentro de una clase con un mtodo defabricacin es siempre ms flexible que hacerlodirectamente.

    Factora

    Universidad del Valle

    16

  • Universidad del Valle

    Singleton

  • Diseado para restringir la creacin de objetos

    pertenecientes a una clase o el valor de un tipo a

    un nico objeto.

    Su intencin consiste en garantizar que una clase

    slo tenga una instancia y proporcionar un punto de

    acceso global a ella.

    Singleton

    Universidad del Valle

    18

  • Se implementa creando en nuestra clase un

    mtodo que crea una instancia del objeto slo si

    todava no existe alguna. Para asegurar que la

    clase no puede ser instanciada nuevamente se

    regula el alcance del constructor (con atributos

    como protegido o privado).

    Singleton

    Universidad del Valle

    19

  • Las situaciones ms habituales de la aplicacin de

    ste patrn son aquellas en las que dicha clase

    controla el acceso a un recurso fsico nico (como

    puede ser el mouse o un archivo abierto en modo

    exclusivo) o cuando cierto tipo de datos debe estar

    disponible para todos los dems objetos de la

    aplicacin.

    Singleton

    Universidad del Valle

    20

  • El patrn Singleton provee una nica instancia

    gracias a que:

    La propia clase es responsable de crear la nica

    instancia.

    Permite el acceso global a dicha instancia

    mediante un mtodo de clase.

    Declara el constructor de clase como privado para

    que no sea instanciable directamente.

    Singleton

    Universidad del Valle

    21

  • Intencin

    Garantizar que una clase slo tenga una instancia

    y proporcione un punto de acceso global a ella.

    Problema

    Varios clientes distintos precisan referenciar a un

    mismo elemento y queremos asegurarnos de que no

    hay ms de una instancia de ese elemento.

    Singleton

    Universidad del Valle

    22

  • Solucin

    Garantizar una nica instancia

    Singleton

    Universidad del Valle

    23

  • Implementacin

    Cambio el constructor a privado.

    Hago que la clase no pueda ser heredada.

    Agrego una variable esttica del mismo tipo de laclase donde esta contenida (instancia).

    Agrego un mtodo esttico que retorne la variableesttica (getInstance).

    No creo el objeto hasta que sea necesario.

    Agrego el cdigo necesario para no crear dosinstancias en distintos hilos.

    Singleton

    Universidad del Valle

    24

  • Implementacin

    Singleton

    Universidad del Valle

    25

  • Usos conocidos

    Quien haya utilizado Microsoft Word, sabe que alpresionar la techa Ctrl+B se obtiene el cuadro dedilogo de bsqueda. Sin embargo, durante toda lavida de la aplicacin, solo puede haber un cuadro dedilogo de bsqueda al mismo tiempo. An si tenemosabiertos varios documentos, solo puede existir unainstancia que trabaja en cualquier documento activo. Dehecho, necesitamos ms que una instancia del cuadro dedilogo de bsqueda.

    Singleton

    Universidad del Valle

    26

  • Usos conocidos

    Un programa de mensajera instantnea

    (Messenger), el cual debe permitir que el usuario

    de una cuenta establezca sesin solo una vez al

    tiempo. En esta aplicacin, el patrn Singleton nos

    ayuda a que la conexin del usuario sea nica, a la

    vez que impide el establecimiento de sesiones

    multiusuario.

    Singleton

    Universidad del Valle

    27

  • Universidad del Valle

    Fachada

  • El patrn Fachada proporciona una interfaz

    unificada de alto nivel para un subsistema, que

    oculta las interfaces de bajo nivel de las que lo

    impiden.

    Con esto se consigue dos objetivos fundamentales:

    hacer el subsistema ms fcil de usar y desacoplar

    a los clientes de las clases del subsistema.

    Fachada

    Universidad del Valle

    29

  • Cuando un cliente que trata utilizar los serviciosofrecidos por un subsistema actuando directamentesobre las interfaces de las clases que implementendicho subsistema se est exponiendo los siguientesinconvenientes:

    Debe contener el conocimiento de cmo funcionan esas clases, comprenderperfectamente la semntica de sus complejas interfaces de bajo nivel y sabercomo utilizarlas. En cada uno de los clientes debe estar codificada lasecuencia de mensajes que pondr a las clases del subsistema encolaboracin para obtener el servicio deseado.

    Debe mantenerse informado de los cambios en dichas interfaces o en ladistribucin de responsabilidades entre las clases de bajo nivel y actualizarsu cdigo adecuadamente.

    Fachada

    Universidad del Valle

    30

  • Aplicaciones

    Por todo esto se deber aplicar el patrn fachada cuando se dealguna de las siguientes circunstancias:

    En general cuando por algn motivo se desee dotar de unainterfaz sencilla y usable a un subsistema complejo. Una fachadaproporciona una vista por defecto de la funcionalidad delsubsistema suficiente para la mayora de los programadores.

    Cuando se quiera estructurar un sistema de subsistemassiguiendo un patrn de capas. Ser de gran ayuda dotar de unafachada a cada nivel de subsistemas y utilizarla como punto deacceso al mismo. De este modo se simplificar al mximo elmantenimiento de las dependencias entre niveles.

    Fachada

    Universidad del Valle

    31

  • Estructura

    Fachada

    Universidad del Valle

    32

  • Estructura

    Fachada

    Universidad del Valle

    33

  • Ventajas

    Ayuda a organizar un sistema en capas, ayuda a

    controlar o eliminar las dependencias complejas o