SlideShare una empresa de Scribd logo
1 de 14
Patrones de diseño DECORATOR Mario Rodríguez Martín
Introducción ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Participantes y estructura ,[object Object],[object Object]
Participantes y estructura ,[object Object],[object Object]
Colaboraciones
Problema que soluciona (Ejemplo) ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]
Implementación (Ejemplo) ,[object Object],[object Object]
Codificación: Ejemplo (I) // Interfaz Ventana   public interface Ventana  {  public void dibujar();  // dibuja la ventana public String getDescripcion();  // devuelve la descripción de la ventana   }  // Implementacion de una ventana concreta public class VentanaConcreta implements Ventana  {  public void dibujar()  {  // dibujamos la ventana   }  public String getDescripcion()  {  return “ventana simple”;  }  }
Codificación: Ejemplo (II) // Clase abstracta VentanaDecorador – implementa a la clase Ventana public abstract class VentanaDecorador implements Ventana  {  protected Ventana decoradorVentana;  public VentanaDecorador (Ventana decVentana)  {  this.decoradorVentana = decVentana;  }  }  // Añadimos funcionalidades a la ventana  public class BordeDecorador extends VentanaDecorador  {  public BordeDecorador (Ventana decoradorVentana)  {  super(decoradorVentana);  }  public void dibujar()  {  dibujarBorde();  decoradorVentana.dibujar();  }
Codificación: Ejemplo (III) private void dibujarBorde()  {  // dibujamos el borde de la ventana   }  public String getDescripcion()  {  return decoradorVentana.getDescripcion() + ", con borde";  }  }  public class BotonAyudaDecorador extends VentanaDecorador  {  public BotonAyudaDecorador (Ventana decoradorVentana)  {  super(decoradorVentana);  }  public void dibujar()  {  dibujarBotonAyuda();  decoradorVentana.dibujar();  }
Codificación: Ejemplo (y IV) private void dibujarBotonAyuda()  {  // dibujamos el botón de ayuda }  public String getDescripcion()  {  return decoradorVentana.getDescripcion() + ", con botón de  ayuda";  }  }  public class VentanaDecoradorTest  {  public static void main(String[] args)  {  Ventana decoradorVentana = new BotonAyudaDecorador (  new BordeDecorador(new VentanaConcreta()));  System.out.println(decoradorVentana.getDescripcion());  }  }
Reglas ,[object Object],[object Object],[object Object],[object Object]
Patrones relacionados ,[object Object],[object Object],[object Object]
Ventajas del patrón Decorator ,[object Object],[object Object],[object Object],[object Object],[object Object],[object Object]

Más contenido relacionado

La actualidad más candente

Digramas de venn aplicado en las bases datos
Digramas de venn aplicado en las bases datosDigramas de venn aplicado en las bases datos
Digramas de venn aplicado en las bases datos
josecuartas
 
Cuestionario
CuestionarioCuestionario
Cuestionario
jpauly4
 
Programación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptProgramación Orientada a Objetos.ppt
Programación Orientada a Objetos.ppt
NachoTValverde
 

La actualidad más candente (20)

Design pattern-presentation
Design pattern-presentationDesign pattern-presentation
Design pattern-presentation
 
Programación Orientada a Eventos Java
Programación Orientada a Eventos JavaProgramación Orientada a Eventos Java
Programación Orientada a Eventos Java
 
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
5.- PPT 2022 05 U01 T01 Desarrollo de Servicios Web I (1915).pptx
 
TUTORIAL DE ECLIPSE
TUTORIAL DE ECLIPSETUTORIAL DE ECLIPSE
TUTORIAL DE ECLIPSE
 
Angular Directives
Angular DirectivesAngular Directives
Angular Directives
 
Guia bootstrap
Guia bootstrapGuia bootstrap
Guia bootstrap
 
Digramas de venn aplicado en las bases datos
Digramas de venn aplicado en las bases datosDigramas de venn aplicado en las bases datos
Digramas de venn aplicado en las bases datos
 
Angular 4 Tutorial | What's New In Angular 4 | Angular Training | Edureka
Angular 4 Tutorial | What's New In Angular 4 | Angular Training | EdurekaAngular 4 Tutorial | What's New In Angular 4 | Angular Training | Edureka
Angular 4 Tutorial | What's New In Angular 4 | Angular Training | Edureka
 
Componentes de eclipse
Componentes de eclipseComponentes de eclipse
Componentes de eclipse
 
Cuestionario
CuestionarioCuestionario
Cuestionario
 
Cuestionario java
Cuestionario javaCuestionario java
Cuestionario java
 
Client-side JavaScript
Client-side JavaScriptClient-side JavaScript
Client-side JavaScript
 
Lenguaje de programacion java
Lenguaje de programacion javaLenguaje de programacion java
Lenguaje de programacion java
 
Introducción a php
Introducción a phpIntroducción a php
Introducción a php
 
S2-POO-1.2 Representación Gráfica
S2-POO-1.2 Representación GráficaS2-POO-1.2 Representación Gráfica
S2-POO-1.2 Representación Gráfica
 
Javascript
JavascriptJavascript
Javascript
 
Advance C# Programming Part 1.pptx
Advance C# Programming Part 1.pptxAdvance C# Programming Part 1.pptx
Advance C# Programming Part 1.pptx
 
Clase 14b uml_actividades
Clase 14b uml_actividadesClase 14b uml_actividades
Clase 14b uml_actividades
 
Programación Orientada a Objetos.ppt
Programación Orientada a Objetos.pptProgramación Orientada a Objetos.ppt
Programación Orientada a Objetos.ppt
 
Patrones GOF
Patrones GOFPatrones GOF
Patrones GOF
 

Destacado

Cadena de responsabilidad.chaine of responsability
Cadena de responsabilidad.chaine of responsabilityCadena de responsabilidad.chaine of responsability
Cadena de responsabilidad.chaine of responsability
UTCH
 
Ccna3 cap8 (1)
Ccna3 cap8 (1)Ccna3 cap8 (1)
Ccna3 cap8 (1)
José Mora
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
kaolong
 
Patrones bridge puente
Patrones bridge puentePatrones bridge puente
Patrones bridge puente
Mario Cabrera
 
La Crisis De La Baja Edad Media
La Crisis De La Baja Edad MediaLa Crisis De La Baja Edad Media
La Crisis De La Baja Edad Media
artesonado
 

Destacado (13)

Observer: Patrón de diseño
Observer: Patrón de diseñoObserver: Patrón de diseño
Observer: Patrón de diseño
 
Reyes de España desde 1492
Reyes de España desde 1492Reyes de España desde 1492
Reyes de España desde 1492
 
Cadena de responsabilidad.chaine of responsability
Cadena de responsabilidad.chaine of responsabilityCadena de responsabilidad.chaine of responsability
Cadena de responsabilidad.chaine of responsability
 
Patrones de diseño de software facade e iterator
Patrones de diseño de software facade e iteratorPatrones de diseño de software facade e iterator
Patrones de diseño de software facade e iterator
 
Facade - Design Pattern - GoF
Facade - Design Pattern - GoFFacade - Design Pattern - GoF
Facade - Design Pattern - GoF
 
Ccna3 cap8 (1)
Ccna3 cap8 (1)Ccna3 cap8 (1)
Ccna3 cap8 (1)
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
Patrón Observer
Patrón ObserverPatrón Observer
Patrón Observer
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
Diseño de Patrones (Fachada)
Diseño de Patrones (Fachada)Diseño de Patrones (Fachada)
Diseño de Patrones (Fachada)
 
Patrones bridge puente
Patrones bridge puentePatrones bridge puente
Patrones bridge puente
 
La Crisis De La Baja Edad Media
La Crisis De La Baja Edad MediaLa Crisis De La Baja Edad Media
La Crisis De La Baja Edad Media
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 

Similar a Decorator

Herencia y polimorfismo unidad 5 semestre 2
Herencia y polimorfismo unidad 5 semestre 2Herencia y polimorfismo unidad 5 semestre 2
Herencia y polimorfismo unidad 5 semestre 2
K Manuel TN
 
Tutorial 1 android
Tutorial 1 androidTutorial 1 android
Tutorial 1 android
libidinosa
 
decorator
 decorator decorator
decorator
difeso
 

Similar a Decorator (20)

Patron decorador
Patron decoradorPatron decorador
Patron decorador
 
Patron de diseño decorator
Patron de diseño decoratorPatron de diseño decorator
Patron de diseño decorator
 
Herencia y polimorfismo unidad 5 semestre 2
Herencia y polimorfismo unidad 5 semestre 2Herencia y polimorfismo unidad 5 semestre 2
Herencia y polimorfismo unidad 5 semestre 2
 
Tutorial 1 android
Tutorial 1 androidTutorial 1 android
Tutorial 1 android
 
decorator
 decorator decorator
decorator
 
Tema5
Tema5Tema5
Tema5
 
Aplicación zirconia
Aplicación zirconiaAplicación zirconia
Aplicación zirconia
 
Presentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoFPresentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoF
 
Clase de uso, semantico y de clases
Clase de uso, semantico y de clasesClase de uso, semantico y de clases
Clase de uso, semantico y de clases
 
Manual de android parte 1
Manual de android parte 1Manual de android parte 1
Manual de android parte 1
 
Patrones diseno software
Patrones diseno softwarePatrones diseno software
Patrones diseno software
 
Patrones de diseño.pptx
Patrones de diseño.pptxPatrones de diseño.pptx
Patrones de diseño.pptx
 
programacion
programacionprogramacion
programacion
 
Programacion
ProgramacionProgramacion
Programacion
 
Tutorial net beans
Tutorial net beansTutorial net beans
Tutorial net beans
 
1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptx1TAP Tema 1-GUI.pptx
1TAP Tema 1-GUI.pptx
 
WXWIDGET.PDF
WXWIDGET.PDFWXWIDGET.PDF
WXWIDGET.PDF
 
Android
AndroidAndroid
Android
 
Hola mundoconc sharp
Hola mundoconc sharpHola mundoconc sharp
Hola mundoconc sharp
 
primer codigo con C sharp
primer codigo con C sharpprimer codigo con C sharp
primer codigo con C sharp
 

Más de Mario Rodriguez (6)

Memoria PFC
Memoria PFCMemoria PFC
Memoria PFC
 
Redes sociales
Redes socialesRedes sociales
Redes sociales
 
PFC LeELa player
PFC LeELa playerPFC LeELa player
PFC LeELa player
 
SETI@home
SETI@homeSETI@home
SETI@home
 
Modelado basado en imágenes
Modelado basado en imágenesModelado basado en imágenes
Modelado basado en imágenes
 
La psicología de los objetos cotidianos - Cap 1
La psicología de los objetos cotidianos - Cap 1La psicología de los objetos cotidianos - Cap 1
La psicología de los objetos cotidianos - Cap 1
 

Último

Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
241521559
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
silviayucra2
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
FagnerLisboa3
 

Último (10)

guía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Josephguía de registro de slideshare por Brayan Joseph
guía de registro de slideshare por Brayan Joseph
 
International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)International Women's Day Sucre 2024 (IWD)
International Women's Day Sucre 2024 (IWD)
 
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft FabricGlobal Azure Lima 2024 - Integración de Datos con Microsoft Fabric
Global Azure Lima 2024 - Integración de Datos con Microsoft Fabric
 
Presentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptxPresentación guía sencilla en Microsoft Excel.pptx
Presentación guía sencilla en Microsoft Excel.pptx
 
pruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNITpruebas unitarias unitarias en java con JUNIT
pruebas unitarias unitarias en java con JUNIT
 
Proyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptxProyecto integrador. Las TIC en la sociedad S4.pptx
Proyecto integrador. Las TIC en la sociedad S4.pptx
 
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
POWER POINT YUCRAElabore una PRESENTACIÓN CORTA sobre el video película: La C...
 
Trabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnologíaTrabajo Mas Completo De Excel en clase tecnología
Trabajo Mas Completo De Excel en clase tecnología
 
Desarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdfDesarrollo Web Moderno con Svelte 2024.pdf
Desarrollo Web Moderno con Svelte 2024.pdf
 
EPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial UninoveEPA-pdf resultado da prova presencial Uninove
EPA-pdf resultado da prova presencial Uninove
 

Decorator

  • 1. Patrones de diseño DECORATOR Mario Rodríguez Martín
  • 2.
  • 3.
  • 4.
  • 6.
  • 7.
  • 8. Codificación: Ejemplo (I) // Interfaz Ventana public interface Ventana { public void dibujar(); // dibuja la ventana public String getDescripcion(); // devuelve la descripción de la ventana } // Implementacion de una ventana concreta public class VentanaConcreta implements Ventana { public void dibujar() { // dibujamos la ventana } public String getDescripcion() { return “ventana simple”; } }
  • 9. Codificación: Ejemplo (II) // Clase abstracta VentanaDecorador – implementa a la clase Ventana public abstract class VentanaDecorador implements Ventana { protected Ventana decoradorVentana; public VentanaDecorador (Ventana decVentana) { this.decoradorVentana = decVentana; } } // Añadimos funcionalidades a la ventana public class BordeDecorador extends VentanaDecorador { public BordeDecorador (Ventana decoradorVentana) { super(decoradorVentana); } public void dibujar() { dibujarBorde(); decoradorVentana.dibujar(); }
  • 10. Codificación: Ejemplo (III) private void dibujarBorde() { // dibujamos el borde de la ventana } public String getDescripcion() { return decoradorVentana.getDescripcion() + ", con borde"; } } public class BotonAyudaDecorador extends VentanaDecorador { public BotonAyudaDecorador (Ventana decoradorVentana) { super(decoradorVentana); } public void dibujar() { dibujarBotonAyuda(); decoradorVentana.dibujar(); }
  • 11. Codificación: Ejemplo (y IV) private void dibujarBotonAyuda() { // dibujamos el botón de ayuda } public String getDescripcion() { return decoradorVentana.getDescripcion() + ", con botón de ayuda"; } } public class VentanaDecoradorTest { public static void main(String[] args) { Ventana decoradorVentana = new BotonAyudaDecorador ( new BordeDecorador(new VentanaConcreta())); System.out.println(decoradorVentana.getDescripcion()); } }
  • 12.
  • 13.
  • 14.