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

La actualidad más candente (20)

09 package diagram
09 package diagram09 package diagram
09 package diagram
 
10 Curso de POO en java - métodos modificadores y analizadores
10 Curso de POO en java - métodos modificadores y analizadores10 Curso de POO en java - métodos modificadores y analizadores
10 Curso de POO en java - métodos modificadores y analizadores
 
7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases7 Curso de POO en java - diagrama de clases
7 Curso de POO en java - diagrama de clases
 
InduSoft Web Studio v7.1 + SP3 Best Practices
InduSoft Web Studio v7.1 + SP3 Best PracticesInduSoft Web Studio v7.1 + SP3 Best Practices
InduSoft Web Studio v7.1 + SP3 Best Practices
 
Installation of java and program execution
Installation of java and program executionInstallation of java and program execution
Installation of java and program execution
 
Que Es Java
Que Es JavaQue Es Java
Que Es Java
 
MS-DOS ejemplo
MS-DOS ejemploMS-DOS ejemplo
MS-DOS ejemplo
 
B.Sc. III(VI Sem) Advance Java Unit1: Exception Handling & Multithreading
B.Sc. III(VI Sem) Advance Java Unit1: Exception Handling & MultithreadingB.Sc. III(VI Sem) Advance Java Unit1: Exception Handling & Multithreading
B.Sc. III(VI Sem) Advance Java Unit1: Exception Handling & Multithreading
 
9.herencia en java
9.herencia en java9.herencia en java
9.herencia en java
 
Java applet
Java appletJava applet
Java applet
 
Greenfoot 1
Greenfoot 1Greenfoot 1
Greenfoot 1
 
8b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 18b Curso de POO en java - paso de diagrama clases a java 1
8b Curso de POO en java - paso de diagrama clases a java 1
 
Arquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdfArquitectura sw varios niveles.pdf
Arquitectura sw varios niveles.pdf
 
Actividad #3 cliente servidor
Actividad #3 cliente servidorActividad #3 cliente servidor
Actividad #3 cliente servidor
 
Elementos de programacion
Elementos de programacionElementos de programacion
Elementos de programacion
 
Java Swing
Java SwingJava Swing
Java Swing
 
Introducción a los patrones de diseño
Introducción a los patrones de diseñoIntroducción a los patrones de diseño
Introducción a los patrones de diseño
 
Caracteristicas de Java
Caracteristicas de JavaCaracteristicas de Java
Caracteristicas de Java
 
Semana 3 Herencia en Java
Semana 3   Herencia en JavaSemana 3   Herencia en Java
Semana 3 Herencia en Java
 
Component Diagram
Component DiagramComponent Diagram
Component Diagram
 

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 (14)

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
 
Patrones de diseño de GoF
Patrones de diseño de GoFPatrones de diseño de GoF
Patrones de diseño de GoF
 
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

redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
nicho110
 

Último (10)

investigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXIinvestigación de los Avances tecnológicos del siglo XXI
investigación de los Avances tecnológicos del siglo XXI
 
Avances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvanaAvances tecnológicos del siglo XXI 10-07 eyvana
Avances tecnológicos del siglo XXI 10-07 eyvana
 
redes informaticas en una oficina administrativa
redes informaticas en una oficina administrativaredes informaticas en una oficina administrativa
redes informaticas en una oficina administrativa
 
Avances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estosAvances tecnológicos del siglo XXI y ejemplos de estos
Avances tecnológicos del siglo XXI y ejemplos de estos
 
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptxEVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
EVOLUCION DE LA TECNOLOGIA Y SUS ASPECTOSpptx
 
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
Resistencia extrema al cobre por un consorcio bacteriano conformado por Sulfo...
 
Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21Innovaciones tecnologicas en el siglo 21
Innovaciones tecnologicas en el siglo 21
 
Guia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos BasicosGuia Basica para bachillerato de Circuitos Basicos
Guia Basica para bachillerato de Circuitos Basicos
 
Buenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptxBuenos_Aires_Meetup_Redis_20240430_.pptx
Buenos_Aires_Meetup_Redis_20240430_.pptx
 
How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.How to use Redis with MuleSoft. A quick start presentation.
How to use Redis with MuleSoft. A quick start presentation.
 

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.