La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Patrón Decorador Por: Robin Ochoa Falla.

Presentaciones similares


Presentación del tema: "Patrón Decorador Por: Robin Ochoa Falla."— Transcripción de la presentación:

1 Patrón Decorador Por: Robin Ochoa Falla

2 Objetivos Agregar responsabilidades menores a una clase.
Añadir responsabilidades a un objeto concreto de forma dinámica, cuando sea imposible la extensión de funcionalidad por herencia, por ser ésta imprevisible en tipo y número

3 Ejemplo Interfaz Gráfica
Un usuario de herramientas gráficas, por ejemplo, debería añadir propiedades como bordes, scroll bar, a cualquier componente de interfaz.

4 Primera Solución Interfaz Gráfica Herencia
Añadir responsabilidades es con herencia, heredando un borde de otra clase inserta borde a toda subclase instanciada.

5 Primera Solución Interfaz Gráfica

6 Problemas Primera solución
No es flexible, pues la elección del borde se hace estáticamente, por lo que el cliente no puede controlar como y cuando decorar el componente con un borde. Si se quiere un componente con borde y deslizadores (por ejemplo) requeriría herencia múltiple además de prever todas las combinaciones factibles lo cual traería explosión combinatoria de clases.

7 Solución Patrón Decorador
Encerrar el componente en otro objeto que añade el borde. El objeto que encierra es llamado decorador. El decorador conforma  la interfaz del componente, éste decora de manera que su presencia sea transparente a los usuarios de los componentes.

8 Solución Decorador

9 Diagrama de Clases Patrón decorador Interfaz Gráfica

10 Funciona Se hace primero la ventana
Se van agregando los decoradores o adornos. La ventaja más inmediata que nos proporciona este patrón es que permite mezclar cualquier  conjunto de decoradores como sea necesario y el cliente lo prefiera.

11 Diagrama de Clases Patrón Decorador

12 PARTES Componente: Define la interfaz para objetos que pueden tener responsabilidades añadidas a ellos dinámicamente. Componente concreto: Define un objeto al que pueden ser agregadas responsabilidades adicionales. Decorador: Mantiene una referencia a un objeto componente y define una interfaz que conforma la interfaz del componente. Decorador Concreto: Añade responsabilidades al componente.

13 Ejemplo(1) JAVA El componente gráfico es un modesto editor de texto:
JEditorPane panel_text = new JEditorPane(); Es muy sencillo añadir la funcionalidad del scroll sin usar herencia: JScrollPane scroll_text = new JScrollPane( panel_text ); El último paso es añadir el decorador (y por añadidura el editor) al contenedor raíz del applet: cont_global.add( scroll_text ); En nuestro ejemplo JEditorPane y JScrollPane heredan de JComponent.

14 Ejemplo (2)

15 Ejemplo (3)

16 Ventajas Amplia la funcionalidad de una interfaz al tiempo que la mantiene igual y se hace dinámicamente. No altera la funcionalidad existente, solo añade más funciones. Las responsabilidades se pueden añadir o quitar.

17 Desventajas Provoca la creación de muchos objetos pequeños encadenados lo que puede llegar a complicar la depuración. La flexibilidad que provee puede dar problemas, pues da la oportunidad para colocarle muchos deslizadores  y varios   rebordes (por ejemplo), lo que traería como consecuencia que el componente sea poco practico y de baja calidad. Las responsabilidades pueden ser ejecutadas a tiempo de ejecución. Puede conducir a la proliferación de clases pequeñas. En algunas ocasiones se puede omitir la clase decorador, en tal caso el diagrama quedaría de la siguiente  manera:

18 Bibliografía Patrones Estrategía y Decorador ( Gamma Erick, Helm Richard, Johnson Ralph, Vlissides John. Design Patterns                Addison-Wesley publishing Company. United States of America          -  Grand Mark.   Patterns in Java Volume 1.                Wiley Computer publishing. United States of America


Descargar ppt "Patrón Decorador Por: Robin Ochoa Falla."

Presentaciones similares


Anuncios Google