Este documento presenta una introducción a los patrones estructurales de diseño, comenzando con una descripción del patrón Adaptador. Luego, describe brevemente los patrones Facade y Composite, explicando que Facade provee una interfaz simplificada para acceder a subsistemas complejos, mientras que Composite permite componer objetos en estructuras jerárquicas para representarlas de manera uniforme.
Buenas prácticas para la construcción de softwareIker Canarias
Esta presentación sobre "buenas prácticas en la construcción de software" se basa principalmente en los "Principios de buena programación" de Christopher Diggins. Consejos generales sobre buenas prácticas, pero centrados en Java al final de la presentación.
Los patrones de diseño dentro del área de la ingeniería de software son diseñados con el objetivo de solventar un problema en específico, pero de forma general como para poder adecuarse a futuros requisitos y problemas.
Buenas prácticas para la construcción de softwareIker Canarias
Esta presentación sobre "buenas prácticas en la construcción de software" se basa principalmente en los "Principios de buena programación" de Christopher Diggins. Consejos generales sobre buenas prácticas, pero centrados en Java al final de la presentación.
Los patrones de diseño dentro del área de la ingeniería de software son diseñados con el objetivo de solventar un problema en específico, pero de forma general como para poder adecuarse a futuros requisitos y problemas.
Presentacion Realizada en la materia Ingenieria de Software de la Universidad de Moron, se cubrieron los siguientes patrones GoF: Decorator, FlyWeight y Template Method
Presentación expuesta en el marco del Drupal Day Barcelona 2011 e impartida por Ramon Vilar sobre las novedades en materia JavaScript que trae Drupal 7 y cómo podemos aprovecharlas.
Presentacion Realizada en la materia Ingenieria de Software de la Universidad de Moron, se cubrieron los siguientes patrones GoF: Decorator, FlyWeight y Template Method
Presentación expuesta en el marco del Drupal Day Barcelona 2011 e impartida por Ramon Vilar sobre las novedades en materia JavaScript que trae Drupal 7 y cómo podemos aprovecharlas.
Diapositivas correspondientes a la parte del framework Ruby On Rails del curso de extensión universitaria "Desarrollo Web Avanzado", celebrado en la Escuela Universitaria de Ingeniería Informática de Oviedo
Diapositivas de la introducción al lenguaje ruby en el curso de extensión universitaria "Desarrollo Web Avanzado" del programa de Extensión Universitaria de la Universidad de Oviedo (2010)
Una introducción al desarrollo de aplicaciones en iOS usando Objective-C.
La mayor parte es explicación de conceptos de Objective-C para desarrolladores que vengan de .NET
ROMPECABEZAS DE ECUACIONES DE PRIMER GRADO OLIMPIADA DE PARÍS 2024. Por JAVIE...JAVIER SOLIS NOYOLA
El Mtro. JAVIER SOLIS NOYOLA crea y desarrolla el “ROMPECABEZAS DE ECUACIONES DE 1ER. GRADO OLIMPIADA DE PARÍS 2024”. Esta actividad de aprendizaje propone retos de cálculo algebraico mediante ecuaciones de 1er. grado, y viso-espacialidad, lo cual dará la oportunidad de formar un rompecabezas. La intención didáctica de esta actividad de aprendizaje es, promover los pensamientos lógicos (convergente) y creativo (divergente o lateral), mediante modelos mentales de: atención, memoria, imaginación, percepción (Geométrica y conceptual), perspicacia, inferencia, viso-espacialidad. Esta actividad de aprendizaje es de enfoques lúdico y transversal, ya que integra diversas áreas del conocimiento, entre ellas: matemático, artístico, lenguaje, historia, y las neurociencias.
Instrucciones del procedimiento para la oferta y la gestión conjunta del proceso de admisión a los centros públicos de primer ciclo de educación infantil de Pamplona para el curso 2024-2025.
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).
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.
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