Monografia patrones de diseño proxy (3.0)

788 views

Published on

Published in: Education
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
788
On SlideShare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
23
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide

Monografia patrones de diseño proxy (3.0)

  1. 1. Patrones de diseño proxy [Escriba el subtítulo del documento] Alumnos: ARELLANO TEJADA, PABLO CESAR HERNANDEZ VALDERRAMA, SERGIO R. TORRES GONZALES, MARCO ANTONIO. Curso: TÓPICOS ESPECIALES EN INGENIERIA DE SOFTWARE. 2014
  2. 2. Patrones de diseño proxy 2014 DEDICATORIA Principalmente dedicamos este trabajo a nuestros padres puesto que nos brindaron apoyo y fortaleza en el desarrollo y transcurso de este, ayudándonos a concluir satisfactoriamente nuestro proyecto. Dedicamos a Dios puesto que nos brinda sabiduría, amor y paciencia, nos ayuda en los momentos más difíciles brindándonos valores que nos fortalezcan no solo como trabajo de grupo, si no como personas. También dedicamos a nuestro Profesor del curso quien nos dio su sabiduría para la elaboración total de nuestra monografía asiendo así posible el desarrollo totalmente de este. 1 Universidad Nacional de Trujillo – Escuela de informática.
  3. 3. Patrones de diseño proxy 2014 Índice 1. INTRODUCCIÓN .................................................................................... 3 2. MARCO TEÓRICO. ................................................................................. 4 3. DEFINICIONES....................................................................................... 5 4. MOTIVACION ......................................................................................... 5 5. USOS DEL PATRÓN PROXY ................................................................... 6 6. ESTRUCTURA DE LA SOLUCION (DIAGRAMA DE CLASES) ..................... 6 7. PARTICIPANTES .................................................................................... 7 8. COLABORACIONES (DIAGRAMA DE SECUENCIA) .................................. 7 10. CONCLUSIONES FINALES ................................................................. 10 11. BIBLIOGRAFIA .................................................................................. 11 2 Universidad Nacional de Trujillo – Escuela de informática.
  4. 4. Patrones de diseño proxy 2014 1. INTRODUCCIÓN El presente documento aborda uno de los patrones estructurales del grupo de los cuatro (GOF), el patrón Proxy, el cual según Eric Gamma su propósito es proporcionar un sustituto de un determinado objeto para controlar el acceso a dicho objeto. También esta investigación presenta la problemática a la cual es aplicable y la solución que propone el patrón estructural Proxy incluyendo diagramas de clases y abordamos la responsabilidad de que este debe de realizar. Asimismo se muestra el código de ejemplo implementando el patrón estructural. 3 Universidad Nacional de Trujillo – Escuela de informática.
  5. 5. Patrones de diseño proxy 2014 2. MARCO TEÓRICO. Los patrones de diseño son la base para la búsqueda de soluciones a problemas comunes en el desarrollo de software y otros ámbitos referentes al diseño de interacción o interfaces. Un patrón de diseño resulta ser una solución a un problema de diseño. Para que una solución sea considerada un patrón debe poseer ciertas características. Una de ellas es que debe haber comprobado su efectividad resolviendo problemas similares en ocasiones anteriores. Otra es que debe ser reutilizable, lo que significa que es aplicable a diferentes problemas de diseño en distintas circunstancias. Los patrones de diseño pretenden: Proporcionar catálogos de elementos reusables en el diseño de sistemas software. Evitar la reiteración en la búsqueda de soluciones a problemas ya conocidos y solucionados anteriormente. Formalizar un vocabulario común entre diseñadores. Estandarizar el modo en que se realiza el diseño 2.1 Principales Patrones GoF (Gang Of Four) 2.1.1 Patrones creacionales Corresponden a patrones de diseño software que solucionan problemas de creación de instancias. Nos ayudan a encapsular y abstraer dicha creación: Object Pool (no pertenece a los patrones especificados por GoF): Abstract Factory (fábrica abstracta) Builder (constructor virtual) Factory Method (método de fabricación) Prototype (prototipo) Singleton (instancia única) 2.1.2 Patrones estructurales Son los patrones de diseño software que solucionan problemas de composición (agregación) de clases y objetos: Adapter o Wrapper (Adaptador o Envoltorio) Bridge (Puente) Composite (Objeto compuesto) 4 Universidad Nacional de Trujillo – Escuela de informática.
  6. 6. Patrones de diseño proxy 2014 Decorator (Decorador) Facade (Fachada) Flyweight (Peso ligero) Proxy: Mantiene un representante de un objeto. Módulo: Agrupa varios elementos relacionados, como clases, singletons, y métodos, utilizados globalmente, en una entidad única. 3. DEFINICIONES Nombre: Patrón Proxy El patrón Proxy está clasificado dentro de los Patrones Estructurales, es también conocido como, Embajador, Apoderado (surrogante). Veamos primero su definición: Un proxy fuerza a que un método de un objeto RealSubject sea indirectamente ejecutado a través de un objeto Proxy, el cual actúa como delegado o sustituto del objeto RealSubject. Los objetos Proxy son usualmente declarados sin que el Cliente sepa de qué se trata de un Objeto Proxy. Se requiere que las llamadas a métodos de un objeto ocurran indirectamente a través de un objeto original, delegando luego las llamadas a los métodos de los objetos respectivos. El objeto proxy, comparte la misma interfaz o superclase que el objeto delegado. 4. MOTIVACION Una razón para controlar el acceso a un objeto es retrasar todo el costo de su creación e inicialización hasta que sea realmente necesario usarlo. Pensemos en un editor de documentos que puede insertar objetos gráficos en un documento. Algunos de estos objetos gráficos, como grandes imágenes raster, pueden ser costosos de crear. Sin embargo abrir un documento debería ser una operación que se efectuase rápidamente, por lo que debería evitar crear todos los objetos costosos a la vez en cuanto se abra el documento. Por otro lado, tampoco es necesario, ya que no todos esos objetos serán visibles al documento al mismo tiempo. . 5 Universidad Nacional de Trujillo – Escuela de informática.
  7. 7. Patrones de diseño proxy 2014 5. USOS DEL PATRÓN PROXY Control de Acceso: El patrón puede ser usado para controlar el acceso a los métodos del RealSubject. La lógica del control de acceso se delegará en el proxy, de esta forma quedará más limpio el RealSubject (en términos de código). Acceso a objetos remotos: Representación de un objeto remoto de forma local, es decir, el Proxy resuelve y enmascara la forma en cómo conectarse al objeto remoto. Ejemplos de implementación de este patrón los pueden encontrar en EJB y RMI. Proxy Virtual: Crea objetos costosos bajo demanda. Por ejemplo, al iniciar una aplicación se pueden instanciar con este patrón todos los iconos de dicha aplicación, pero sólo cuando éste sea solicitado realmente ira a buscarlo al disco y presentado al usuario. Proxy de Referencia Inteligente: Sustituto de una referencia que hace operaciones adicionales cuando se accede a un objeto, como por ejemplo, controlar concurrencia, contar número de instancias, cargar un objeto en memoria, manejo de cache) 6. ESTRUCTURA DE LA SOLUCION (DIAGRAMA DE CLASES) Un proxy fuerza a que un método de un objeto RealSubject sea indirectamente ejecutado a través de un objeto Proxy, el cual actúa como delegado o sustituto del objeto RealSubject. Los objetos Proxy son usualmente declarados sin que el Cliente sepa que se trata de un Objeto Proxy. Diagrama de clases de cómo se implementa este patrón. 6 Universidad Nacional de Trujillo – Escuela de informática.
  8. 8. Patrones de diseño proxy 2014 7. PARTICIPANTES 7.1SUBJECT (Graphic): Interfaz o clase abstracta que proporciona un acceso común al objeto real y su representante (proxy), de modo que pueda usarse, proxy en cualquier sitio en él se espere un RealSubject. 7.2 PROXY (ImageProxy): Mantiene una referencia al objeto real. Controla la creación y acceso a las operaciones del objeto real. 7.3 REALSUBJECT (Image): Define el objeto real representado por el proxy. 8. COLABORACIONES (DIAGRAMA DE SECUENCIA) El siguiente diagrama de clases que se muestra es cuando se necesita el Objeto Real y este es instanciado para que se muestre el cliente. Por lo tanto el Proxy instancia al RealSubject. 7 Universidad Nacional de Trujillo – Escuela de informática.
  9. 9. Patrones de diseño proxy 2014 9. IMPLEMENTACION (EJEMPLO) Partamos con la SubjectProxy.java interfaz que deben cumplir tanto RealSubject como el public interface Subject { void doOperation(String username); } Veamos la implementación del RealSubject.java public classSubjectRealimplements Subject { @Override public void doOperation(String username) { System.out.println("doOperation Real"); } } Finalmente la implementación del SubjectProxy.java 8 Universidad Nacional de Trujillo – Escuela de informática.
  10. 10. Patrones de diseño proxy 2014 public classSubjectProxyimplements Subject { private finalSubject _subjectReal; private boolean_connected= false; public SubjectProxy() { _subjectReal= new SubjectReal(); } @Override public voiddoOperation(String username) { // Control de Acceso simple if (!username.isEmpty() && "admin".equals(username)) { System.out.println("doOperacion proxied"); if(_connected) { _subjectReal.doOperation(username); } else { connectToRemote(); _subjectReal.doOperation(username); } } else { System.out.println("Access Denied"); } } private voidconnectToRemote() { System.out.println("Connecting to remote"); _connected= true; } } Nuestro cliente (quien consumirá a Subject) será SubjectTest.java publicclassSubjectTest { public static voidmain(String[] args) { Subject subjectProxied = new SubjectProxy(); subjectProxied.doOperation("admin"); } } 9 Universidad Nacional de Trujillo – Escuela de informática.
  11. 11. Patrones de diseño proxy 2014 Esto imprimirá lo siguiente en la consola: La explicación al Access Denied está dada porque el patrón Proxy se utilizó como control de acceso al método doOperation. Sólo si el username es admin se ejecutará dicho método Veamos el Segundo Test publicclassSubjectTest { public static voidmain(String[] args) { Subject subjectProxied = new SubjectProxy(); subjectProxied.doOperation("admin"); } } imprimirá lo siguiente en consola: 10. CONCLUSIONES FINALES Se debe de implementar el patrón proxy cuando haya objetos que tomen mucho tiempo en cargarse, por ejemplo cargar una imagen que consume demasiada memoria. El patrón Proxy proporciona un representante o sustituto de otro objeto para controlar el acceso a este. Los patrones de diseño describen la solución a problemas que se repiten una y otra vez en nuestros sistemas, de forma que se puede usar esa solución siempre que haga falta. 10 Universidad Nacional de Trujillo – Escuela de informática.
  12. 12. Patrones de diseño proxy 2014 11. BIBLIOGRAFIA Ian Sommerville, Ingeniería del Software,septima edición, Pearson 2005. Roger Pressman, Ingeniería del Software un enfoque práctico,quinta edición, Mc Graw Hill 2002. http://www.slideshare.net/urumisama/soa-3244791 http://arantxa.ii.uam.es/~eguerra/docencia/0809/12%20Proxy.pdf http://wikipedia.org/wiki/Proxy_(patron_de_diseño) 11 Universidad Nacional de Trujillo – Escuela de informática.

×