El patrón de diseño Proxy Raúl Heras Alberto Blasco José Manuel Arévalo.

Slides:



Advertisements
Presentaciones similares
CJ02 – Técnicas avanzadas en java 1.4 y 5.0
Advertisements

UNIVERSIDAD PRIVADA SAN PEDRO ESCUELA INGENIERIA CIVIL
Curso de java básico (scjp)
Curso de java básico (scjp)
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME RMS Ing. Ronald Criollo.
Estructura de Datos Unidad 4. Recursividad Dra. María Lucía Barrón Estrada Enero-Junio 2007.
POLIMORFISMO UNIDAD 4.
Herencia en C#.
Fundamentos de la programación orientada a objetos
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
FACHADA.
Modelos de Datos Modelado y Diseño de Bases de Datos
El proceso de desarrollo de software
Lección 1 Introducción a la POO
Genéricos en Java Jaime Ramírez, Ángel Lucas González
Tema 1. Introducción a la programación (Lenguaje java).
RMI (Remote Method Invocation)
Encapsulamiento y Abstracción
Programación Orientada a Objetos en Java
Modelo-Vista-Controlador (MVC)
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
HERENCIA.
Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.
Recursión Se dice que un método es recursivo si forma parte de sí mismo o se define en función de sí mismo. La recursión es un medio particularmente poderoso.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Introducción a la Programación Orientada a Objetos Redefinición y Sobrecarga Dada la siguiente jerarquía de clases: Alfa Delta Beta.
Realizado por: Bertha Palomeque A. Rodrigo Barzola J. Sensor de Temperatura utilizando el Starter Kit Javelin Stamp.
Modificadores.
TALLER DE PROGRAMACIÓN III
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Tema 6: Clases Antonio J. Sierra.
Tema 10: Interfaces Antonio J. Sierra.
Unidad I Java y C++ : Similitudes y diferencias
Public class MiClase { public static int tmp = 123; // miembro variable public static final double PI = ;// miembro constante public float.
USA agenda e itemAgenda
Remoting.Net Michel Rener. TEMARIO ¿Qué es una Aplicación Distribuida? ¿Qué es una Aplicación basada en Cliente/Servidor? ¿Qué es la Tecnología de Objetos.
Diseño de Sistemas. Patrones de Diseño. Geronimo Manso.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Suponiendo que además en la clase U hay: import java.util.*; class U{ static Scanner teclado = new Scanner(System.in); static public int readInt(String.
Patrón Observador Un patrón de diseño es una descripción de clases y objetos comunicándose entre si adaptada para resolver un problema de diseño general.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Servicios Web. Servicios web Son programas con funcionalidad accesible a través de protocolo http que permiten la ejecución remota de métodos y funciones.
Programación Orientada a Aspectos (POA)
ESTRUCTURA DE DATOS EN JAVA
Patrones Creacionales
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Capítulo 5 - b: Hilos. 4.2 Silberschatz, Galvin and Gagne ©2005 Operating System Concepts – 7 th edition, Jan 23, 2005 Ejemplo de hilos: un applet Un.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
OBJETOS DISTRIBUIDOS E INVOCACIÓN REMOTA ING. MARISCAL.
Patrones de diseño DECORATOR Mario Rodríguez Martín
Patrones de Diseño: Command
Modelos de Bases de Datos
MEMENTO Patrón de Comportamiento Ana María Mateo Jorge P. Andrés
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Patrón Iterator Santiago García Sánchez Rebeca Marcos Salcedo Mª Cristina Zapatero Gironda.
Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.
Presentado por: PABLO ANDRES DIAZ SAIN HASSAM CAICEDO
Modelo de 3 capas.
Patrones de diseño equipo n.1
INSTITUTO TECNOLOGICO DE TEHUACAN Ingeniería en sistemas computacionales Curso de apoyo a la titulación CLASES DE JAVA Diciembre de 2008.
Patrones de Diseño Agustín J. González ElO329.
Patrón de Diseño Brigde ( Handle/Body) Calderón Márquez Jorge Alberto Posgrado de Ciencia e Ingeniería en Computación. Tecnología Orientada a Objetos.
Un paseo por las nuevas funciones. Patrones de Diseño Por si no ha quedado claro, los Patrones de Diseño, son el esqueleto de las soluciones a problemas.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Tema 1: Concurrencia con Java
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
Transcripción de la presentación:

El patrón de diseño Proxy Raúl Heras Alberto Blasco José Manuel Arévalo

Introducción Los patrones estructurales se ocupan de cómo se combinan las clases y los objetos para formar estructuras más grandes. El Proxy es un patrón de tipo estructural asociado a objetos.

Definición Este patrón, nos proporciona un sustituto o representante de otro objeto para controlar el acceso a éste. Un objeto Proxy, recibe llamadas a métodos que pertenecen a otros objetos. El objeto Proxy, comparte interfaz o superclase común con el objeto que realmente provee el servicio.

Motivación Intermediarios entre objeto cliente y objeto deseado. El patrón obliga a que las llamadas a métodos de un objeto ocurran indirectamente a través de un objeto Proxy.

Aplicaciones Util cuando se desea retrasar la instanciación de un objeto hasta que sea necesario usarlo (optimiza operaciones costosas: invocar imagen). Proporciona un representante local de un objeto situado en otro espacio de direcciones (Proxy remoto o “Embajador”). Uso en sistemas concurrentes, mediante cerrojo, controlando el acceso al objeto original. Puede utilizarse como un sustituto de un simple puntero, que lleva a cabo operaciones adicionales cuando se accede a un objeto (contar el numero de referencias a un objeto real).

Consecuencias Un proxy puede ocultar el hecho de que un objeto reside en un espacio de direcciones diferente (proxy remoto). Puede llevar a cabo optimizaciones tales como crear un objeto por encargo (invocar imagen). Permiten realizar tareas de mantenimiento adicionales cuando se accede a un objeto (Proxy de protección y de referencias inteligentes).

Consecuencias Se introduce un nivel de indirección al acceder al objeto Se consigue una administración transparente de los servicios del objeto real.

Representación UML

Participantes Sujeto:  Define la interfaz común para el RealSubject y el Proxy, de modo que pueda usarse un Proxy en cualquier sitio en el que se espere un RealSubject. RealSubject:  Define el objeto real representado.

Participantes Proxy:  Mantiene una referencia que permite al Proxy acceder al objeto real.  Proporciona una interfaz idéntica a la del sujeto, de manera que un Proxy pueda ser sustituido por el sujeto real.  Controla el acceso al sujeto real, y puede ser responsable de su creación y borrado.

Ejemplo de implementación (sin Proxy) public interface Ivehiculo { void start(); void forward(); void stop(); } public class Coche implements Ivehiculo{ private String nombre; public Coche(String nombre){ this.nombre=nombre; } public void start() { System.out.println("coche"+this.nombre+"arranca"); } public void stop() { System.out.println("coche"+this.nombre+"frena"); } public void forward() { System.out.println("coche"+this.nombre+"acelera"); }

Ejemplo de implementación (sin Proxy) public class Cliente{ public static void main(String[]args){ Ivehiculo v = new Coche("Sin Proxy"); v.start(); v.forward(); v.stop(); }

Ejemplo de implementación (con Proxy) public class VehiculoProxy implements IVehiculo{ private IVehiculo v; public VehiculoProxy(IVehiculo v){ this.v = v; } public void start(){ System.out.println("Vehiculo Proxy: parado"); v.start(); System.out.println("Vehiculo Proxy: en marcha”); } public void forward(){ System.out.println("Vehiculo Proxy: en aceleracion”); v.forward(); } public void stop(){ System.out.println("Vehiculo Proxy: frenando”); v.forward(); }

Ejemplo de implementación (con Proxy) public class ClienteConProxy{ public static void main(String[]args){ Ivehiculo c = new Coche(“Con Proxy"); Ivehiculo v=new VehiculoProxy(c); v.start(); v.stop(); v.forward(); }

Implementación: conclusiones No Proxy: El cliente interactúa directamente con los métodos definidos en la interface Proxy: se encuentra entre la interfaz y la implementación e intercepta las llamadas a los métodos. La intención del Proxy es controlar el acceso al objeto deseado, además de mejorar la funcionalidad del mismo