Monografias.com > Sin categoría
Descargar Imprimir Comentar Ver trabajos relacionados

Patrones Estructurales de Software (página 3)




Enviado por Pablo Turmero



Partes: 1, 2, 3

Monografias.com
Estructura
Fachada

Monografias.com
32
Fachada
Aplicabilidad
Proporcionar una interfaz simple a un subsistema.
Hay muchas dependencias entre clientes y las clases que implementan una abstracción.
Se desea una arquitectura de varios niveles: una fachada define el punto de entrada para cada nivel-subsistema.

Monografias.com
33
Fachada
Consecuencias
Una fachada ofrece los siguientes beneficios:

Facilita a los clientes el uso de un subsistema, al ocultar sus componentes.
Proporciona un acoplamiento débil entre un subsistema y los clientes: cambios en los componentes no afectan a los clientes.
No se impide a los clientes el uso de las clases del subsistema si lo necesitan.

Monografias.com
34
Fachada
Implementación
Es posible reducir el acoplamiento entre clientes y subsistema, definiendo la fachada como una clase abstracta con una subclase por cada implementación del subsistema.
La fachada no es la única parte pública de un subsistema, sino que es posible declarar clases individuales del subsistema como públicas (paquetes en Java, name space en C++).

Monografias.com
35
Flyweight (Peso Ligero)
Propósito
Uso de objetos compartidos para soportar eficientemente un gran número de objetos de poco tamaño.
Motivación
En una aplicación editor de documentos, ¿modelamos los caracteres mediante una clase?
Un flyweight es un objeto compartido que puede ser utilizado en diferentes contextos simultáneamente.
No hace asunciones sobre el contexto
Estado intrínseco vs. Estado extrínseco

Monografias.com
36
Flyweight
Estado intrínseco se almacena en el flyweight y consiste de información que es independiente del contexto y se puede compartir.
Estado extrínseco depende del contexto y por tanto no puede ser compartido.
Objetos clientes son responsables de pasar el estado extrínseco al flyweight cuando lo necesita.
Objetos flyweight se usan para modelar conceptos o entidades de los que se necesita una gran cantidad en una aplicación, p.e. caracteres de un texto.

Monografias.com
37
Flyweight
Flyweight getFlyweight (key) {
if “existe (flyweight[key])” { return “flyweight existente”}
else { “crear nuevo flyweight”;
“añadirlo al conjunto de flyweights”;
return “nuevo flyweight”}
}

Monografias.com
38
Flyweight
Aplicabilidad
Aplicarlo siempre que se cumplan las siguientes condiciones:

Una aplicación utiliza un gran número de cierto tipo de objetos.
El coste de almacenamiento es alto debido al excesivo número de objetos.
La mayor parte del estado de esos objetos puede hacerse extrínseco.
Al separar el estado extrínseco, muchos grupos de objetos pueden reemplazarse por unos pocos objetos compartidos.
La aplicación no depende de la identidad de los objetos.

Monografias.com
39
Flyweight
Consecuencias
Puede introducir costes run-time debido a la necesidad de calcular y transferir el estado extrínseco.
La ganancia en espacio depende de varios factores:
la reducción en el número de instancias
el tamaño del estado intrínseco por objeto
si el estado extrínseco es calculado o almacenado
Interesa un estado extrínseco calculado
Se suele combinar con el Composite.

Monografias.com
40
Flyweight
Implementación
La aplicabilidad depende de la facilidad de obtener el estado extrínseco. Idealmente debe poder calcularse a partir de una estructura de objetos que necesite poco espacio de memoria.
Debido a que los flyweight son compartidos, no deberían ser instanciados directamente por los clientes: clase FlyweightFactory.

Monografias.com
41
Código del Ejemplo
public class Elemento {
public Elemento() {..}
public void mostrar (Window w, ElemContexto ec) {..}
public void setFont (Font f, ElemContexto ec) {..}
public Font getFont (ElemContexto ec) {..}
public void insert (ElemContexto ec, Elemento e) {..}

}
public class Caracter extends Elemento {
char code;
public Caracter(char c) {..}
public void mostrar (Window w, ElemContexto ec) {..}
}

Monografias.com
42
Código del Ejemplo
public class ElemContexto {
int index;
Btree fonts;

public ElemContexto() {…}
public void setFont (Font f, int span) {..}
public Font getFont () {..}
public void insert (int cant) {..}
public void next (){..}
}

Monografias.com
43
Ejemplos en Java
Strings
Pool de objetos compartidos para literales de tipo String
“hola” = “hola”
Método intern() en clase String: dado un string lo añade al pool
String c = (a+b).intern
Bordes de Swing
class BorderFactory {
public static Border createLineBorder();
public static Border createCompoundBorder()

}

JPanel pane = new Jpanel
pane.setBorder(Borderfactory.createBorderLine(Color.black))

Monografias.com
44
Proxy (Sustituto)
Propósito
Proporcionar un sustituto (surrogate) de un objeto para controlar el acceso a dicho objeto.
Motivación
Diferir el coste de crear un objeto hasta que sea necesario usarlo: creación bajo demanda.
Un editor de documentos que incluyen objetos gráficos.
¿Cómo ocultamos que una imagen se creará cuando se necesite?: manejar el documento requiere conocer información sobre la imagen.

Monografias.com
45
Proxy
Motivación
Hay situaciones en las que un cliente no referencia o no puede referenciar a un objeto directamente, pero necesita interactuar con él.
Un objeto proxy puede actuar como intermediario entre el objeto cliente y el objeto destino.
El objeto proxy tiene la misma interfaz como el objeto destino.
El objeto proxy mantiene una referencia al objeto destino y puede pasarle a él los mensajes recibidos (delegación).

Monografias.com
46
Estructura
Proxy

Monografias.com
47
Proxy
Motivación
Retrasar la operación de una clonación de una tabla hasta conocer que es realmente necesaria. Se desea clonar la tabla para evitar mantener un bloqueo un largo período de tiempo: operación costosa. Se puede crear una clase que encapsule la tabla y sólo clone cuando sea necesario.
Mantenimiento de los servicios ante los fallos.
Materialización perezosa de tuplas en objetos.

(Ver fotocopias entregadas)

Monografias.com
48
Proxy
Aplicabilidad
Siempre que hay necesidad de referenciar a un objeto mediante una referencia más rica que un puntero o una referencia normal.
Situaciones comunes;

Proxy acceso remoto (acceso a un objeto en otro espacio de direcciones)
Proxy virtual (crea objetos grandes bajo demanda)
Proxy para protección (controlar acceso a un objeto)
Referencia inteligente (smart reference, proporciona operaciones adicionales)

Monografias.com
49
Proxy
Consecuencias
Introduce un nivel de indirección para:

Un proxy remoto oculta el hecho que objetos residen en diferentes espacios de direcciones.
Un proxy virtual tales como crear o copiar un objeto bajo demanda.
Un proxy para protección o las referencias inteligentes permiten realizar tareas de control sobre los objetos accedidos.

Monografias.com
50
Proxy
Ejercicio 1. Se tiene una gran colección de objetos, tal como una tabla hash, y debe permitirse el acceso concurrente de diferentes clientes. Uno de los clientes desea realizar varias operaciones de búsqueda consecutivas, no permitiéndose el acceso a otros clientes para añadir o eliminar elementos de la colección.

Ejercicio 2. Un servidor tiene varias utilidades que se ejecutan como daemons sobre algunos puertos. ¿Cómo puede conseguirse acceder a estos servicios como si fuesen objetos locales desde varias máquinas cliente?

Partes: 1, 2, 3
 Página anterior Volver al principio del trabajoPágina siguiente 

Nota al lector: es posible que esta página no contenga todos los componentes del trabajo original (pies de página, avanzadas formulas matemáticas, esquemas o tablas complejas, etc.). Recuerde que para ver el trabajo en su versión original completa, puede descargarlo desde el menú superior.

Todos los documentos disponibles en este sitio expresan los puntos de vista de sus respectivos autores y no de Monografias.com. El objetivo de Monografias.com es poner el conocimiento a disposición de toda su comunidad. Queda bajo la responsabilidad de cada lector el eventual uso que se le de a esta información. Asimismo, es obligatoria la cita del autor del contenido y de Monografias.com como fuentes de información.

Categorias
Newsletter