monografia patrones de diseño proxy (3.0)
TRANSCRIPT
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
Patrones de diseño proxy 2014
1 Universidad Nacional de Trujillo – Escuela de informática.
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.
Patrones de diseño proxy 2014
2 Universidad Nacional de Trujillo – Escuela de informática.
Í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
Patrones de diseño proxy 2014
3 Universidad Nacional de Trujillo – Escuela de informática.
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.
Patrones de diseño proxy 2014
4 Universidad Nacional de Trujillo – Escuela de informática.
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)
Patrones de diseño proxy 2014
5 Universidad Nacional de Trujillo – Escuela de informática.
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.
.
Patrones de diseño proxy 2014
6 Universidad Nacional de Trujillo – Escuela de informática.
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.
Patrones de diseño proxy 2014
7 Universidad Nacional de Trujillo – Escuela de informática.
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.
Patrones de diseño proxy 2014
8 Universidad Nacional de Trujillo – Escuela de informática.
9. IMPLEMENTACION (EJEMPLO)
Partamos con la interfaz que deben cumplir tanto RealSubject como el
SubjectProxy.java
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
Patrones de diseño proxy 2014
9 Universidad Nacional de Trujillo – Escuela de informática.
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");
}
}
Patrones de diseño proxy 2014
10 Universidad Nacional de Trujillo – Escuela de informática.
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.
Patrones de diseño proxy 2014
11 Universidad Nacional de Trujillo – Escuela de informática.
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)