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

Patrones de Comportamiento del Software (página 2)




Enviado por Pablo Turmero



Partes: 1, 2, 3, 4

Monografias.com
11
Cadena de Responsabilidad
Ejemplo 2: Sistema de control de seguridad
Existen varios sensores que transmiten el estado a un ordenador central. La acción de un sensor depende del contexto que lo incluye (jerarquía de áreas o zonas de seguridad). Un sensor pasa el evento al agregado que lo incluye.

Monografias.com
12
Command (Orden)
Propósito
Encapsula un mensaje como un objeto, permitiendo parametrizar los clientes con diferentes solicitudes, añadir a una cola las solicitudes y soportar funcionalidad deshacer/rehacer (undo/redo)
Motivación
Algunas veces es necesario enviar mensaje a un objeto sin conocer el selector del mensaje ni el objeto receptor.
Por ejemplo widgets (botones, menús,..) realizan una acción como respuesta a la interacción del usuario, pero no se puede explicitar en su implementación.

Monografias.com
13
Motivación
Command

Monografias.com
14
Estructura
Command

Monografias.com
15
Colaboración
Command
(Gp:) r : Receptor
(Gp:) : Cliente
(Gp:) co : Command
(Gp:) : Invocador
(Gp:) 1. Command (r)
(Gp:) 2. registrarCommand(co)
(Gp:) 1. ejecutar()
(Gp:) 1.1. accion()

Monografias.com
16
Command
Aplicabilidad
Parametrizar objetos por la acción a realizar (alternativa a funciones Callback: función que es registrada en el sistema para ser llamada más tarde; en C++ se puede usar punteros a funciones)
Especificar, añadir a una cola y ejecutar mensajes en diferentes instantes: un objeto Command tiene un tiempo de vida independiente de la solicitud original.
Soportar facilidad undo/redo.
Recuperación de fallos.

Monografias.com
17
Command
Consecuencias
Desacopla el objeto que invoca la operación del objeto que sabe cómo realizarla.
Cada subclase CommandConcreto especifica un par receptor/acción, almacenando el receptor como un atributo e implementando el método ejecutar.
Objetos command pueden ser manipulados como cualquier otro objeto.
Se pueden crear command compuestos (aplicando el patrón Composite).
Es fácil añadir nuevos commands.
Un objeto Command es realmente un Adapter.

Monografias.com
18
Command
Implementación
¿Cuál debe ser la “inteligencia” de un command?
No delegar en nadie
Encontrar dinámicamente el objeto receptor y delegar en él
Soportar undo/redo
Atributos para almacenar estado y argumentos de la operación.
Lista de objetos commands
En la lista se colocan copias.

Monografias.com
19
Mecanismo undo/redo

Monografias.com
20
Mecanismo undo/redo
public void invocarCommand (AbstractCommand command){
if (command instanceof Undo) {
undo(); return; }
if (command instanceof Redo) {
redo(); return; }
if (command.doIt()) {
addToHistory(command);
} else { historiaList.clear();}
if (redoList.size() > 0) redoList.clear();
}
private void undo() {
if (historyList.size() > 0) {
AbstractCommand ac;
undoCmd = (AbstractCommand) historyList.removeFirst();
undoCmd.undoIt();
redoList.addFirst(undoCmd);
}

Monografias.com
21
Command
En lenguajes como Eiffel o Java no es posible que un método pueda actuar como argumento de otro método. Por ello es necesario definir una clase (functor ) que encapsule al método y sus instancias se pasarán como argumento.
Ejemplos en Java: Comparator, Observer, ActionListener, …

Monografias.com
22
Ejemplos Functor
Ejemplo 1: Comparar dos objetos utilizando cualquier criterio de ordenación: interfaz Comparator en Java

public interface Comparator {
int compare (Object o1, Object o2); }

Un objeto Comparator puede ser pasado a una rutina de ordenación o ser utilizado por una colección para mantener el orden de sus elementos.

Ejemplo 2: Interfaz Observer en el patrón Observer.

Ejemplo 3: Interfaces listener en el modelo de delegación de eventos.

Monografias.com
23
Ejemplo

Monografias.com
24
Command
Implementación
Podemos evitar la jerarquía de subclases de Command si no necesitamos la facilidad undo/redo con metaclases. En Smalltalk,

self receptor perform: unSelector with: unArg

Un objeto functor normalmente implementa el comportamiento deseado sin delegar. Un objeto command normalmente delega en otro objeto.
Un objeto command actúa como un functor si tan sólo implementa el comportamiento deseado.

Monografias.com
25
Command
Ejercicio: Escribir una clase con la funcionalidad de ejecutar periódicamente uno o más métodos sobre diferentes objetos. Por ejemplo, ejecutar una operación de copia de seguridad cada hora o una operación de comprobación de estado de un disco cada 10 minutos o imprimir la secuencia de Fibonacci. Se desea que la clase no conozca qué operaciones concretas debe ejecutar ni los objetos sobre los que debe aplicarlas. Esto es, se debe desacoplar la clase que planifica la ejecución de esos métodos de las clases que realmente proporcionan las operaciones a ejecutar.

Monografias.com
26
Interpreter
Propósito
Dado un lenguaje, definir una representación para su gramática junto con un intérprete que utiliza la representación para interpretar sentencias en dicho lenguaje.
Motivación
Interpretar una expresión regular.
Usa una clase para representar cada regla, los símbolos en la parte derecha son atributos.
Aplicabilidad
Usar si la gramática es simple y la eficiencia no es importante.

Monografias.com
27
Intérprete
expre := literal | cond | seq | rep
alt := expre ‘|’ expre
seq := expre ‘&’ expre
rep := expre ‘*’
literal := ‘a’|’b’|’c’|…{‘a’|’b’|’c’|…| } *

Monografias.com
28
Intérprete

Monografias.com
29
Intérprete
lluvias | (trasvase & desaladoras) *

Monografias.com
30
Interpreter
Estructura

Partes: 1, 2, 3, 4
 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