SlideShare una empresa de Scribd logo
Patrones de diseño II
     «Promoviendo buenas prácticas de diseño y
            construcción de software»


Profesor: Juan José González Faúndez
 Curso: Arquitectura y patrones J2EE
             UNAB 2011
Patrones estructurales
• Adapter
   – Traductor que adapta la interfaz de un servidor a un cliente
• Bridge
   – Abstracción que vincula a una entre muchas implementaciones
• Composite
   – Estructura para construir jerarquías basadas en composición
• Decorator
   – Extender la funcionalidad dinámicamente de modo transparente
• Facade
   – Definir una interfaz unificada para varios subsistemas
• Flyweight
   – Compartición eficiente de muchos objetos de grano fino
• Proxy
   – Proporciona un sustituto de otro objeto para controlar su acceso
Adaptador
• Propósito:
      Convertir la interfaz de una clase en otra que
esperan los clientes.
• Otras denominaciones:
   – Class Adapter y Object Adapter
   – Wrapper (Envolvente)
• Motivación
   – Reutilizar una clase de una biblioteca aunque su interfaz
     no correspondiera exactamente con el que requiere una
     aplicación concreta.
   – Para añadir funcionalidad que la clase reutilizada no
     proporciona
Adaptador
class Class Mo...


         Client           Target                             Adaptee

                     +   Request()                     +   SpecificRequest()




                                         -adaptee

                                   Adapter

                     +   Request()
                          adaptee->SpecificRequest()
Adaptador
• Aplicación
  – Para usar una clase existente cuya interfaz no se
    corresponde con el que se necesita
  – Para crear una clase reutilizable que coopera con
    clases imprevistas (esto es, que no tienen
    necesariamente interfaces compatibles)
  – El adaptador de objeto sólo: para utilizar varias
    subclases existentes para las que sería poco práctico
    adaptar su interfaz heredando de cada una. Un
    adaptador de objeto puede adaptar la interfaz de su
    clase padre
Adaptador Ejemplo
class Class Mo...


           MotorElectrico

    +   activar() : void
    +   conectar() : void
    +   desconectar() : void
    +   detener() : void                                          «abstract»
    +   moverMasRapido() : void                                     Motor

                                                             +   acelerar() : void
        Una empresa nos envía                                +   apagar() : void
        un motor eléctrico.                                  +   encender() : void

        Como vemos, este
        motor hace lo mismo
        que el nuestro, pero de
        manera y con llamadas
        un poco diferentes. ¿
        Cómo hacemos para               MotorEconomico                                   MotorOferta
        integrar este
                                                                                                             Este motor ya no se
        MotorEléctrico al resto     +    acelerar() : void                           +   acelerar() : void   usa tanto
        de nuestro sistema? Así     +    apagar() : void                             +   apagar() : void
        es, con un adaptador o      +    encender() : void                           +   encender() : void
        adapter!
        El adapter “envuelve”
        al objeto extraño (por
        eso le llaman wrapper
        también, ya que
        wrapper viene siendo
        envoltorio).
Adaptador Solución Ejemplo 1
class Class Mo...


                                  «abstract»
                                    Motor

                             +   acelerar() : void
                             +   apagar() : void                        MotorElectricoAdapter
                             +   encender() : void                                                   Clase Adaptador
                                                                -   motorElectrico: MotorElectrico

                                                                +   acelerar() : void
                                                                +   apagar() : void
                                                                +   encender() : void


        MotorEconomico                         MotorOferta

    +    acelerar() : void              +   acelerar() : void
    +    apagar() : void                +   apagar() : void
    +    encender() : void              +   encender() : void


                                                                           MotorElectrico
                                                                                                     Clase Adaptada
                                                                    +    activar() : void
                                                                    +    conectar() : void
                                                                    +    desconectar() : void
                                                                    +    detener() : void
                                                                    +    moverMasRapido() : void
Adaptador Solución Ejemplo 1
• Como ven el adapter se encarga no solo de corregir los nombres de los
  métodos, sino también de cosas como conectar y desconectar el motor,
  cosas que a nuestra implementación no le importan. Pero lo más
  importante es que ahora podemos utilizar esta implementación de Motor
  en nuestro sistema utilizando la implementación de «ellos». Por ejemplo
  podemos hacer cosas como esta:
                 Motor motor = new MotorEconomico();
                 motor.encender();
                 motor.acelerar();
                 motor.apagar();

                 motor = new MotorOferta();
                 motor.encender();
                 motor.acelerar();
                 motor.apagar();

                 motor = new MotorElectricoAdapter() ;
                 motor.encender();
                 motor.acelerar();
                 motor.apagar();
Patrón Facade
• Provee una interface simple para acceder a
  subsistemas complejos.
• Motivación:
Patrón Facade
• Aplicabilidad: La interfaz es suficientemente
  buena para la mayoría de los clientes.
  Desacoplar las clases del subsistema de los
  clientes y otros subsistemas. De esta forma
  promovemos la independencia y la
  portabilidad.
Patrón Facade
• Estructura:
Patrón Facade
• Beneficios:
  – Ocultamos la implementación de los subsistemas a los
    clientes, haciendo el subsistema fácil de usar.
  – Promovemos un bajo acoplamiento entre el cliente y
    los subsistemas. Podemos realizar cambios en las
    clases sin comprometer el subsistema.
  – Reduce la dependencia de compilación en sistemas
    grandes.
  – Simplifica la portabilidad del sistema hacia otras
    plataformas.
  – Note que el Facade no agrega ninguna funcionalidad,
    solo simplifica las interfaces.
Patrón Facade
• Un compilador
Patrón Facade
class Class Mo...


                                       Hipoteca

                         -   banco: Banco
                         -   credito: Credito
                         -   prestamo: Prestamo

                         +   EsElegible(int, Cliente) : boolean




         Banco
                                                                  Cliente

                      Credito                       Prestamo
Patrón Composite
• Componer objetos en estructuras de árbol
  para representar jerarquías. El patrón
  Composite permite a los clientes tratar
  objetos individuales y composiciones de
  objetos de manera uniforme.
• La aplicación del patrón composite es simple,
  las clases compuesta extienden de una clase
  base que representa los objetos primitivos.
Patrón Composite
class Class Mo...


                                    Component

                             +   Add() : Component      1..*
         Client
                             +   GetChild() : Component
                             +   Operation()
                             +   Remove() : Component




                    Leaf                         Composite

           +   Operation()             +   Add() : Component
                                       +   GetChild() : Component   -children
                                       +   Operation()
                                            forall g in children
                                              g.Operation();
                                       +   Remove() : Component
Patrón Composite
class Class Mo...


                            «abstract»
                              Menu

                      +   agregar(Menu) : void
                      +   eliminar(Menu) : void
                      +   mostrar(int) : void




        MenuElemento                          CompositeMenu

    +   agregar(Menu) : void              -   elementos: ArrayList
    +   eliminar(Menu) : void
    +   mostrar(Menu) : void              +   agregar(Menu) : void
    +   mostrar(int) : void               +   eliminar(Menu) : void
                                          +   mostrar(Menu) : void
                                          +   mostrar(int) : void
Fin parte II

Más contenido relacionado

La actualidad más candente

Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
Iker Canarias
 
Presentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoFPresentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoF
juansoto86
 
Patrones de diseño y frameworks
Patrones de diseño y frameworksPatrones de diseño y frameworks
Patrones de diseño y frameworks
Daniel Cam Urquizo
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseñoaleja0940
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
Kelly Cuervo
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
Autentia
 
Patrones bridge puente
Patrones bridge puentePatrones bridge puente
Patrones bridge puenteMario Cabrera
 
Implementación y adaptación de patrones de diseño
Implementación y adaptación de patrones de diseñoImplementación y adaptación de patrones de diseño
Implementación y adaptación de patrones de diseño
Ju Pe
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
Esteban Espinel
 
Patrones GOF
Patrones GOFPatrones GOF
Patrones Creacionales
Patrones CreacionalesPatrones Creacionales
Patrones Creacionales
Fausto J Loja Mora
 
Abstract Factory
Abstract FactoryAbstract Factory
Abstract Factory
Diego Calderon
 
Buider Patron de Diseño
Buider Patron de DiseñoBuider Patron de Diseño
Buider Patron de DiseñoMario Cabrera
 
Presentacion Patrones Creacionales
Presentacion Patrones CreacionalesPresentacion Patrones Creacionales
Presentacion Patrones Creacionales
Sergio David Fernández
 
Patrones de creación
Patrones de creaciónPatrones de creación
Patrones de creación
Autentia
 
El universo JavaScript en Drupal 7
El universo JavaScript en Drupal 7El universo JavaScript en Drupal 7
El universo JavaScript en Drupal 7
Ymbra
 
Clean code 10-11
Clean code 10-11Clean code 10-11
Clean code 10-11
540deg
 

La actualidad más candente (20)

Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
Presentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoFPresentacion Patrones De Diseno GoF
Presentacion Patrones De Diseno GoF
 
Patrones de diseño y frameworks
Patrones de diseño y frameworksPatrones de diseño y frameworks
Patrones de diseño y frameworks
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Patrones de diseño
Patrones de diseñoPatrones de diseño
Patrones de diseño
 
Patrones estructurales
Patrones estructuralesPatrones estructurales
Patrones estructurales
 
Patrones bridge puente
Patrones bridge puentePatrones bridge puente
Patrones bridge puente
 
Implementación y adaptación de patrones de diseño
Implementación y adaptación de patrones de diseñoImplementación y adaptación de patrones de diseño
Implementación y adaptación de patrones de diseño
 
06 patrones
06 patrones06 patrones
06 patrones
 
Patrones de diseño de software
Patrones de diseño de softwarePatrones de diseño de software
Patrones de diseño de software
 
Patrones GOF
Patrones GOFPatrones GOF
Patrones GOF
 
Patrones Creacionales
Patrones CreacionalesPatrones Creacionales
Patrones Creacionales
 
Abstract Factory
Abstract FactoryAbstract Factory
Abstract Factory
 
Buider Patron de Diseño
Buider Patron de DiseñoBuider Patron de Diseño
Buider Patron de Diseño
 
Presentacion Patrones Creacionales
Presentacion Patrones CreacionalesPresentacion Patrones Creacionales
Presentacion Patrones Creacionales
 
Patrones de creación
Patrones de creaciónPatrones de creación
Patrones de creación
 
Intro
IntroIntro
Intro
 
El universo JavaScript en Drupal 7
El universo JavaScript en Drupal 7El universo JavaScript en Drupal 7
El universo JavaScript en Drupal 7
 
Clean code 10-11
Clean code 10-11Clean code 10-11
Clean code 10-11
 
10 sintaxis oo
10 sintaxis oo10 sintaxis oo
10 sintaxis oo
 

Destacado

Diseño de Patrones (Fachada)
Diseño de Patrones (Fachada)Diseño de Patrones (Fachada)
Diseño de Patrones (Fachada)
Fanny Ruiz
 
Exposicion de patrón de diseño fachada
Exposicion de patrón de diseño fachadaExposicion de patrón de diseño fachada
Exposicion de patrón de diseño fachada
joseph929
 
Análisis y Diseño OO 2
Análisis y Diseño OO 2Análisis y Diseño OO 2
Análisis y Diseño OO 2
Jano González
 
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
Pietro Doninelli
 
Cadena de responsabilidad.chaine of responsability
Cadena de responsabilidad.chaine of responsabilityCadena de responsabilidad.chaine of responsability
Cadena de responsabilidad.chaine of responsabilityUTCH
 
Patrones de Diseño y Frameworks
Patrones de Diseño y FrameworksPatrones de Diseño y Frameworks
Patrones de Diseño y Frameworks
Daniel Cam Urquizo
 
Facade - Design Pattern - GoF
Facade - Design Pattern - GoFFacade - Design Pattern - GoF
Facade - Design Pattern - GoF
jlrvpuma
 
Ccna3 cap8 (1)
Ccna3 cap8 (1)Ccna3 cap8 (1)
Ccna3 cap8 (1)José Mora
 
Decorator
DecoratorDecorator
Decorator
Mario Rodriguez
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño IIkaolong
 
Patrones diseño de software
Patrones diseño de softwarePatrones diseño de software
Patrones diseño de software
Manuel Capel-Tunon
 

Destacado (11)

Diseño de Patrones (Fachada)
Diseño de Patrones (Fachada)Diseño de Patrones (Fachada)
Diseño de Patrones (Fachada)
 
Exposicion de patrón de diseño fachada
Exposicion de patrón de diseño fachadaExposicion de patrón de diseño fachada
Exposicion de patrón de diseño fachada
 
Análisis y Diseño OO 2
Análisis y Diseño OO 2Análisis y Diseño OO 2
Análisis y Diseño OO 2
 
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
 
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 y Frameworks
Patrones de Diseño y FrameworksPatrones de Diseño y Frameworks
Patrones de Diseño y Frameworks
 
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)
 
Decorator
DecoratorDecorator
Decorator
 
Patrones de diseño II
Patrones de diseño IIPatrones de diseño II
Patrones de diseño II
 
Patrones diseño de software
Patrones diseño de softwarePatrones diseño de software
Patrones diseño de software
 

Similar a Patrones de diseño II

Patrones estructurados
Patrones estructuradosPatrones estructurados
Patrones estructurados
Ismael Armijos
 
Operadores poo
Operadores pooOperadores poo
Operadores poo
RochaJaqueline
 
Programacion oo
Programacion ooProgramacion oo
Programacion oo
karlalopezbello
 
Sobrecarga de operadores
Sobrecarga de operadoresSobrecarga de operadores
Sobrecarga de operadoresr0na91
 
5 Mecanismos Reuntilizacion Abstraccion
5 Mecanismos Reuntilizacion Abstraccion5 Mecanismos Reuntilizacion Abstraccion
5 Mecanismos Reuntilizacion AbstraccionUVM
 
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
Luis775803
 
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptxEvolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Luis775803
 
Dcom visualC++
Dcom visualC++Dcom visualC++
Dcom visualC++
Eliana Ruiz
 
Conexión de Base de Datos
Conexión de Base de DatosConexión de Base de Datos
Conexión de Base de Datos
Priscila Edith Gómez Rascón
 
Ruby On Rails Intro
Ruby On Rails IntroRuby On Rails Intro
Ruby On Rails Intro
ThirdWay
 
El Mal Odiado Javascript
El Mal Odiado JavascriptEl Mal Odiado Javascript
El Mal Odiado JavascriptEl Jota
 
Diseño Agile
Diseño AgileDiseño Agile
Diseño Agile
Martin Salias
 
Rails intro
Rails introRails intro
Rails intro
Miguel Fernández
 
Introduccion
IntroduccionIntroduccion
Introduccionreivax
 
Practica Siete Delphi
Practica Siete  DelphiPractica Siete  Delphi
Practica Siete Delphi
Jose Ponce
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii1 2d
 
Introducción a ObjectiveC e IOS
Introducción a ObjectiveC e IOSIntroducción a ObjectiveC e IOS
Introducción a ObjectiveC e IOS
Eduard Tomàs
 

Similar a Patrones de diseño II (20)

Patrones estructurados
Patrones estructuradosPatrones estructurados
Patrones estructurados
 
Por qué java no soporta la sobre carga de operadores
Por qué java no soporta la sobre carga de operadoresPor qué java no soporta la sobre carga de operadores
Por qué java no soporta la sobre carga de operadores
 
Operadores poo
Operadores pooOperadores poo
Operadores poo
 
Programacion oo
Programacion ooProgramacion oo
Programacion oo
 
Charla
CharlaCharla
Charla
 
Sobrecarga de operadores
Sobrecarga de operadoresSobrecarga de operadores
Sobrecarga de operadores
 
5 Mecanismos Reuntilizacion Abstraccion
5 Mecanismos Reuntilizacion Abstraccion5 Mecanismos Reuntilizacion Abstraccion
5 Mecanismos Reuntilizacion Abstraccion
 
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
Microsoft Reactor - Creando un modelo de Regresión con Azure Machine Learnin...
 
Met2 07 01-introduccion_poo
Met2 07 01-introduccion_pooMet2 07 01-introduccion_poo
Met2 07 01-introduccion_poo
 
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptxEvolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
Evolution INTech - Acceso a bases de datos con Minimal APIs de .NET 6.pptx
 
Dcom visualC++
Dcom visualC++Dcom visualC++
Dcom visualC++
 
Conexión de Base de Datos
Conexión de Base de DatosConexión de Base de Datos
Conexión de Base de Datos
 
Ruby On Rails Intro
Ruby On Rails IntroRuby On Rails Intro
Ruby On Rails Intro
 
El Mal Odiado Javascript
El Mal Odiado JavascriptEl Mal Odiado Javascript
El Mal Odiado Javascript
 
Diseño Agile
Diseño AgileDiseño Agile
Diseño Agile
 
Rails intro
Rails introRails intro
Rails intro
 
Introduccion
IntroduccionIntroduccion
Introduccion
 
Practica Siete Delphi
Practica Siete  DelphiPractica Siete  Delphi
Practica Siete Delphi
 
Notas clase java ii
Notas clase java iiNotas clase java ii
Notas clase java ii
 
Introducción a ObjectiveC e IOS
Introducción a ObjectiveC e IOSIntroducción a ObjectiveC e IOS
Introducción a ObjectiveC e IOS
 

Último

Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdfAsistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Demetrio Ccesa Rayme
 
corpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdfcorpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdf
YolandaRodriguezChin
 
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdfINFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
Alejandrogarciapanta
 
Junio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividadesJunio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividades
cintiat3400
 
El Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundoEl Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundo
SandraBenitez52
 
El fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxEl fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docx
Alejandrino Halire Ccahuana
 
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
JAVIER SOLIS NOYOLA
 
Mapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativaMapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativa
TatianaVanessaAltami
 
Proceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de PamplonaProceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de Pamplona
Edurne Navarro Bueno
 
Fase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría AnalíticaFase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría Analítica
YasneidyGonzalez
 
Educar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdfEducar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdf
Demetrio Ccesa Rayme
 
Semana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptxSemana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptx
LorenaCovarrubias12
 
Introducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BIIntroducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BI
arleyo2006
 
Conocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del ArrabalConocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del Arrabal
Profes de Relideleón Apellidos
 
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
FelixCamachoGuzman
 
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptxAutomatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
GallardoJahse
 
El lugar mas bonito del mundo resumen del libro
El lugar mas bonito del mundo resumen del libroEl lugar mas bonito del mundo resumen del libro
El lugar mas bonito del mundo resumen del libro
Distea V región
 
Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcional
YasneidyGonzalez
 
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIALCUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
DivinoNioJess885
 
Texto_de_Aprendizaje-1ro_secundaria-2024.pdf
Texto_de_Aprendizaje-1ro_secundaria-2024.pdfTexto_de_Aprendizaje-1ro_secundaria-2024.pdf
Texto_de_Aprendizaje-1ro_secundaria-2024.pdf
ClaudiaAlcondeViadez
 

Último (20)

Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdfAsistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
Asistencia Tecnica Cultura Escolar Inclusiva Ccesa007.pdf
 
corpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdfcorpus-christi-sesion-de-aprendizaje.pdf
corpus-christi-sesion-de-aprendizaje.pdf
 
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdfINFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
INFORME MINEDU DEL PRIMER SIMULACRO 2024.pdf
 
Junio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividadesJunio 2024 Fotocopiables Ediba actividades
Junio 2024 Fotocopiables Ediba actividades
 
El Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundoEl Liberalismo económico en la sociedad y en el mundo
El Liberalismo económico en la sociedad y en el mundo
 
El fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docxEl fundamento del gobierno de Dios. Lec. 09. docx
El fundamento del gobierno de Dios. Lec. 09. docx
 
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...
 
Mapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativaMapa_Conceptual de los fundamentos de la evaluación educativa
Mapa_Conceptual de los fundamentos de la evaluación educativa
 
Proceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de PamplonaProceso de admisiones en escuelas infantiles de Pamplona
Proceso de admisiones en escuelas infantiles de Pamplona
 
Fase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría AnalíticaFase 3; Estudio de la Geometría Analítica
Fase 3; Estudio de la Geometría Analítica
 
Educar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdfEducar por Competencias GS2 Ccesa007.pdf
Educar por Competencias GS2 Ccesa007.pdf
 
Semana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptxSemana #10-PM3 del 27 al 31 de mayo.pptx
Semana #10-PM3 del 27 al 31 de mayo.pptx
 
Introducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BIIntroducción a la ciencia de datos con power BI
Introducción a la ciencia de datos con power BI
 
Conocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del ArrabalConocemos la ermita de Ntra. Sra. del Arrabal
Conocemos la ermita de Ntra. Sra. del Arrabal
 
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx1º GRADO CONCLUSIONES DESCRIPTIVAS  PRIMARIA.docx
1º GRADO CONCLUSIONES DESCRIPTIVAS PRIMARIA.docx
 
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptxAutomatización de proceso de producción de la empresa Gloria SA (1).pptx
Automatización de proceso de producción de la empresa Gloria SA (1).pptx
 
El lugar mas bonito del mundo resumen del libro
El lugar mas bonito del mundo resumen del libroEl lugar mas bonito del mundo resumen del libro
El lugar mas bonito del mundo resumen del libro
 
Fase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcionalFase 1, Lenguaje algebraico y pensamiento funcional
Fase 1, Lenguaje algebraico y pensamiento funcional
 
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIALCUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
CUENTO EL TIGRILLO DESOBEDIENTE PARA INICIAL
 
Texto_de_Aprendizaje-1ro_secundaria-2024.pdf
Texto_de_Aprendizaje-1ro_secundaria-2024.pdfTexto_de_Aprendizaje-1ro_secundaria-2024.pdf
Texto_de_Aprendizaje-1ro_secundaria-2024.pdf
 

Patrones de diseño II

  • 1. Patrones de diseño II «Promoviendo buenas prácticas de diseño y construcción de software» Profesor: Juan José González Faúndez Curso: Arquitectura y patrones J2EE UNAB 2011
  • 2. Patrones estructurales • Adapter – Traductor que adapta la interfaz de un servidor a un cliente • Bridge – Abstracción que vincula a una entre muchas implementaciones • Composite – Estructura para construir jerarquías basadas en composición • Decorator – Extender la funcionalidad dinámicamente de modo transparente • Facade – Definir una interfaz unificada para varios subsistemas • Flyweight – Compartición eficiente de muchos objetos de grano fino • Proxy – Proporciona un sustituto de otro objeto para controlar su acceso
  • 3. Adaptador • Propósito: Convertir la interfaz de una clase en otra que esperan los clientes. • Otras denominaciones: – Class Adapter y Object Adapter – Wrapper (Envolvente) • Motivación – Reutilizar una clase de una biblioteca aunque su interfaz no correspondiera exactamente con el que requiere una aplicación concreta. – Para añadir funcionalidad que la clase reutilizada no proporciona
  • 4. Adaptador class Class Mo... Client Target Adaptee + Request() + SpecificRequest() -adaptee Adapter + Request() adaptee->SpecificRequest()
  • 5. Adaptador • Aplicación – Para usar una clase existente cuya interfaz no se corresponde con el que se necesita – Para crear una clase reutilizable que coopera con clases imprevistas (esto es, que no tienen necesariamente interfaces compatibles) – El adaptador de objeto sólo: para utilizar varias subclases existentes para las que sería poco práctico adaptar su interfaz heredando de cada una. Un adaptador de objeto puede adaptar la interfaz de su clase padre
  • 6. Adaptador Ejemplo class Class Mo... MotorElectrico + activar() : void + conectar() : void + desconectar() : void + detener() : void «abstract» + moverMasRapido() : void Motor + acelerar() : void Una empresa nos envía + apagar() : void un motor eléctrico. + encender() : void Como vemos, este motor hace lo mismo que el nuestro, pero de manera y con llamadas un poco diferentes. ¿ Cómo hacemos para MotorEconomico MotorOferta integrar este Este motor ya no se MotorEléctrico al resto + acelerar() : void + acelerar() : void usa tanto de nuestro sistema? Así + apagar() : void + apagar() : void es, con un adaptador o + encender() : void + encender() : void adapter! El adapter “envuelve” al objeto extraño (por eso le llaman wrapper también, ya que wrapper viene siendo envoltorio).
  • 7. Adaptador Solución Ejemplo 1 class Class Mo... «abstract» Motor + acelerar() : void + apagar() : void MotorElectricoAdapter + encender() : void Clase Adaptador - motorElectrico: MotorElectrico + acelerar() : void + apagar() : void + encender() : void MotorEconomico MotorOferta + acelerar() : void + acelerar() : void + apagar() : void + apagar() : void + encender() : void + encender() : void MotorElectrico Clase Adaptada + activar() : void + conectar() : void + desconectar() : void + detener() : void + moverMasRapido() : void
  • 8. Adaptador Solución Ejemplo 1 • Como ven el adapter se encarga no solo de corregir los nombres de los métodos, sino también de cosas como conectar y desconectar el motor, cosas que a nuestra implementación no le importan. Pero lo más importante es que ahora podemos utilizar esta implementación de Motor en nuestro sistema utilizando la implementación de «ellos». Por ejemplo podemos hacer cosas como esta: Motor motor = new MotorEconomico(); motor.encender(); motor.acelerar(); motor.apagar(); motor = new MotorOferta(); motor.encender(); motor.acelerar(); motor.apagar(); motor = new MotorElectricoAdapter() ; motor.encender(); motor.acelerar(); motor.apagar();
  • 9. Patrón Facade • Provee una interface simple para acceder a subsistemas complejos. • Motivación:
  • 10. Patrón Facade • Aplicabilidad: La interfaz es suficientemente buena para la mayoría de los clientes. Desacoplar las clases del subsistema de los clientes y otros subsistemas. De esta forma promovemos la independencia y la portabilidad.
  • 12. Patrón Facade • Beneficios: – Ocultamos la implementación de los subsistemas a los clientes, haciendo el subsistema fácil de usar. – Promovemos un bajo acoplamiento entre el cliente y los subsistemas. Podemos realizar cambios en las clases sin comprometer el subsistema. – Reduce la dependencia de compilación en sistemas grandes. – Simplifica la portabilidad del sistema hacia otras plataformas. – Note que el Facade no agrega ninguna funcionalidad, solo simplifica las interfaces.
  • 13. Patrón Facade • Un compilador
  • 14. Patrón Facade class Class Mo... Hipoteca - banco: Banco - credito: Credito - prestamo: Prestamo + EsElegible(int, Cliente) : boolean Banco Cliente Credito Prestamo
  • 15. Patrón Composite • Componer objetos en estructuras de árbol para representar jerarquías. El patrón Composite permite a los clientes tratar objetos individuales y composiciones de objetos de manera uniforme. • La aplicación del patrón composite es simple, las clases compuesta extienden de una clase base que representa los objetos primitivos.
  • 16. Patrón Composite class Class Mo... Component + Add() : Component 1..* Client + GetChild() : Component + Operation() + Remove() : Component Leaf Composite + Operation() + Add() : Component + GetChild() : Component -children + Operation() forall g in children g.Operation(); + Remove() : Component
  • 17. Patrón Composite class Class Mo... «abstract» Menu + agregar(Menu) : void + eliminar(Menu) : void + mostrar(int) : void MenuElemento CompositeMenu + agregar(Menu) : void - elementos: ArrayList + eliminar(Menu) : void + mostrar(Menu) : void + agregar(Menu) : void + mostrar(int) : void + eliminar(Menu) : void + mostrar(Menu) : void + mostrar(int) : void